C#网络编程:Socket编程

套接字简介:套接字最早是Unix的,window是借鉴过来的。TCP/IP协议族提供三种套接字:流式、数据报式、原始套接字。其中原始套接字允许对底层协议直接访问,一般用于检验新协议或者新设备问题,很少使用。

套接字编程原理:延续文件作用思想,打开-读写-关闭的模式。

C/S编程模式如下:

  • 服务器端:

打开通信通道,告诉本地机器,愿意在该通道上接受客户请求——监听,等待客户请求——接受请求,创建专用链接进行读写——处理完毕,关闭专用链接——关闭通信通道(当然其中监听到关闭专用链接可以重复循环)

  • 客户端:打开通信通道,连接服务器——数据交互——关闭信道。

Socket通信方式:

  • 同步:客户端在发送请求之后必须等到服务器回应之后才可以发送下一条请求。串行运行
  • 异步:客户端请求之后,不必等到服务器回应之后就可以发送下一条请求。并行运行

套接字模式:

  • 阻塞:执行此套接字调用时,所有调用函数只有在得到返回结果之后才会返回。在调用结果返回之前,当前进程会被挂起。即此套接字一直被阻塞在网络调用上。
  • 非阻塞:执行此套接字调用时,调用函数即使得不到得到返回结果也会返回。

套接字工作步骤:

  • 服务器监听:监听时服务器端套接字并不定位具体客户端套接字,而是处于等待链接的状态,实时监控网络状态
  • 客户端链接:客户端发出链接请求,要连接的目标是服务器端的套接字。为此客户端套接字必须描述服务器端套接字的服务器地址与端口号。
  • 链接确认:是指服务器端套接字监听到客户端套接字的链接请求时,它响应客户端链接请求,建立一个新的线程,把服务器端套接字的描述发送给客户端,一旦客户端确认此描述,则链接建立好。而服务器端的套接字继续处于监听状态,继续接受其他客户端套接字请求。

在TCP/IP网络中,IP网络交互分类两大类:面向连接的交互与面向无连接的交互。

 

 

 

 

 

参考

C# Socket编程 同步以及异步通信

C#网络编程二:Socket编程

posted @ 2018-11-26 11:15  quanzhan  阅读(648)  评论(0编辑  收藏  举报