Socket网络编程基础

来源:互联网 发布:苏联 知乎 编辑:程序博客网 时间:2024/05/10 18:52

Socket通常叫做套接字,用于描述IP和端口,是通讯链]的句柄。和线程一样,本身并不是直接对数据进行处理,而是调用系统的套接字对信息进行处理。

 

Socket类在System.Net. Socket命名空间下.

当使用IP和IPaddress等时,要导入System.Net命名空间。

通讯的基本流程:

客户端:准备IP和端口-----把IP端口绑定到网络节点-----创建一个Socket通讯套接字-----Socket通过网路节点需求连接到服务端-----服务端连接成功----通讯套接字发送(接收)消息

 

 

服务端:创建监听套接字----获得客户端IP端口节点-----绑定节点---设置监听队列长度---------开始监听客户端连接需求(监听到需求后产生一个负责通讯的套接字)-------客户端连接成功----通讯套接字发送(接收)消息

 

Socket 类为网络通信提供了一套丰富的方法和属性。Socket类允许使用 ProtocolType 枚举中所列出的任何一种协议执行异步和同步数据传输

 

如果应用程序在执行期间只需要一个线程,使用下面的方法,这些方法适用于同步操作模式。

 

•如果当前使用的是面向连接的协议(如 TCP),则服务器可以使用 Listen 方法侦听连接。Accept 方法处理任何传入的连接需求,并返回可用于与远程主机进行数据通信的 Socket。可以使用此返回的 Socket 来调用 Send 或 Receive 方法。如果要指定本地 IP 地址和端口号,需在调用 Listen 方法之前先调用 Bind 方法。如果希望基础服务提供程序为您分配可用端口,需使用端口号 0。如果希望连接到侦听主机,需调用 Connect 方法。若要进行数据通信,需调用 Send 或Receive 方法。

 

 

•如果当前使用的是无连接协议(如 UDP),则根本不需要侦听连接。调用 ReceiveFrom 方法可接受任何传入的数据报。使用 SendTo 方法可将数据报发送到远程主机。

 

 

若要在执行过程中使用单独的线程处理通信,使用下面的方法,这些方法适用于异步操作模式。

 

•如果当前使用的是面向连接的协议(如 TCP),则可使用 Socket、BeginConnect 和 EndConnect 方法来连接侦听主机。通过使用 BeginSend 和 EndSend 方法,或者使用 BeginReceive 和 EndReceive 方法,可以进行异步数据通信。可以使用 BeginAccept 和 EndAccept 处理传入的连接需求。

 

 

•如果使用的是 UDP 等无连接协议,则可以使用 BeginSendTo 和 EndSendTo 来发送数据报,而使用 BeginReceiveFrom 和 EndReceiveFrom 来接收数据报。

 

 

如果对一个套接字执行多个异步操作,它们不一定按启动时的顺序完成。

 

当数据发送和数据接收完成之后,可使用 Shutdown 方法来禁用 Socket。在调用 Shutdown 之后,可调用 Close 方法来释放与 Socket 关联的所有资源。