Socket的两种类型

SOCKET
有两种类型:
 流式Socket(STREAM):
是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低;
 数据报式Socket(DATAGRAM):
是一种无连接的Socket,对应于无连接的UDP服务应用.不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高.
 
 UDP 数据包套接字的数据发送方式:
    将数据折成很多份,然后都发到对方去,但是对方接受到的数据的顺序不一样是发送的顺序,发送出去的数据不一定能顺利到达(丢包),接收方验证所有包齐全后,要重新按照包的组合顺序组建数据
  TCP流式套接字的数据发送方式:
     在发送数据前,会先经历TCP协议的三次握手协议来建立连接,然后通过连接有次序的将数据发送给接收方,接收方拿到数据后发告诉发送方,数据接收完毕.如果发送超时,那么发送方会再次发送数据.但是.因为连接一直在发送期间保持,所以比较占用资源
 
Socket一般应用模式 - 服务器端和客户端
Socket的通讯过程:
  服务器端:
     1.申请一个socket
 //创建一个监听客户端请求的套接字
 Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
     2.绑定到一个IP地址和一个端口上
 //创建IP对象
 IPAddress address = IPAddress.Parse(txtIP.text);
 //创建包含IP和Port的网络终结点对象
 IPEndPoint endPoint = new IPEndPoint(address,int.Parse(txtPort.Text.Trim().toString());
 //为监听套接字绑定端口
 server.Bind(endPoint);
     3.开启侦听,等待接授连接
 //开始监听,并设置监听队列的最大长度 10
 server.Listen(10);
 //接受客户端连接请求,并创建一个通信套接字,会阻断线程
 Socket sokMsg = server.Accept();
 
  客户端:
     1.申请一个socket
 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Strem, ProtocolType.Tcp);
     2.连接服务器(指明IP地址和端口号)
 clinet.Connect(endpoint);
  服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听。

posted on 2015-05-10 16:37  阿兴的平凡世界  阅读(1459)  评论(0)    收藏  举报

导航