Socket客户端与服务器端进行TCP协议通信

    基于Tcp协议的Socket通讯类似于B/S架构,面向连接,但不同的是服务器端可以向客户端主动推送消息。

使用TCP协议通讯需满足以下条件:

img

TCP-服务器端Socket

TCP-客户端Socket


Socket客户端与服务器端进行UDP协议通信

    基于Udp协议是无连接模式通讯,占用资源少,响应速度快,延时低。至于可靠性,可通过应用层的控制来满足。(不可靠连接)

使用UDP协议通讯需满足以下条件:

img

UDP-服务器端Socket

UDP-客户端Socket

TCP和UDP协议的区别

  1. TCP是有连接的可靠的,而UDP无连接不可靠的。
  2. TCP占用资源多,而UDP较少。
  3. TCP是流模式,而UDP是数据报模式。
  4. TCP保证数据的正确性,而UDP可能丢包。

使用TcpClient,TcpListener,UdpClient简化socket实现网络通讯

      这些协议建立在System.NetSockets.Socket类的基础之上,负责数据传送的细节。TcpClient和TcpListener使用NetworkStream类表示网络。使用GetStream方法返回网络流,然后调用该流的Read和Write方法。NetworkStream不拥有协议类的基础套接字,因此关闭并不影响套接字。UdpClient类使用字节数组保存UDP数据文报,使用Send方法向网络发送数据,使用Receive方法接收传入的数据文报。

TcpListener

TcpClient

UdpClient

  1. 服务器端
    • 代码:
      //创建udpclient对象
      UdpClient udpclient = new UdpClient(new IPEndPoint(IPAddress.Parse("192.168.1.1"),9999));
      //接收数据
      IPEndPoint point = new IPEndPoint(IPAddress.Any,0);
      byte[] data = udpclient.Receive(ref point);
      string msg = Endcoding.UTF8.GetString(data);
      //关闭
      udpclient.Close();
      

2.客户端