您的位置:首页 > 理论基础 > 计算机网络

C#.网络编程.TcpListener&TcpClient

2016-01-04 13:58 459 查看
一直以来觉得自己接触编程的起始时间点太晚,比如我直到上了大学才知道原来操作系统不止windows一个……

对网络也算是满感兴趣的,听说C#支持网络编程,感觉特别想了解一下。

然而学的不多,看的一个教程是用TcpListener和TcpClient进行的传输,作为对基础Socket类的一个封装,其使用尤其简单。

尚且不知道如何使用Udp……

命名空间

using System.Net
using System.Net.Sockets


TcpListener

看名字就知道大概。即侦听来自Tcp网络客户端的连接

构造函数

1、本地ip地址与指定端口号

new TcpListener(IPAddress , Int32);


端口号参数为0则会自己获取一个可用的端口号而无须程序员指定

2、对上述两个参数的一个封装类

new TcpListener(IPEndPoint)


简单使用

1、开启

public void Start();


开始侦听连接请求,收到一个就存到队列里存着,队列满则报错SocketException

2、获取连接

public TcpClient AcceptTcpClient();


从队列里取出一个连接,返回TcpClient。如果队列里还没有连接,那么程序就会卡在这一步,直到收到一个连接。

3、数据传输

在刚刚获得的TcpClient对象上调用以下方法

public NetworkStream GetStream();


这也就获得了一个网络信息流NetWorkStream,就可以写入Write和读取Read了

TcpClient

也就是Tcp的网络客户端

构造函数

1、无参构造函数

public TcpClient();


底层会自己匹配最合适的local IP地址和port端口号,不过只适合于IPV4

简单使用

1、连接

public void Connect(
IPEndPoint remoteEP
)
public void Connect(
IPAddress address,
int port
)


向远程的目标发起连接请求。

如果远程刚刚好有一个TcpListener已经Start()了,那么这个请求就会被接受。否则程序运行到这里就卡住了。这和TcpListener的AcceptTcpClient有相同道理。

2、传输

public NetworkStream GetStream();


这和远程计算机获得的流是同一个,可以写入Write和读取Read。一般都是一端写入另一端读取。

用完了别忘了关掉Clos。

基本使用就这样(要写得更好就得配合异步编程等等,异步编程的方法总结尚有待梳理)。自己也只是简单的了解了一下。尚且对更基础的Socket全无了解。有时间慢慢学吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: