C#网络编程学习(1)---Socket之Tcp协议的简单使用

时间:2022-12-20 10:20:25

使用Tcp协议实现最简单的服务器与客户端通信

1、方法介绍

public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);
参数1:指定Socket使用的寻址方案(IPV4还是IPV6)
AddressFamily.InterNetwork:IPV4类型
AddressFamily.InterNetworkV6: IPV6类型

参数2:指定Socket的类型
SocketType.Stream:Tcp使用的字节流
SocketType.Dgram:Udp使用的数据报

参数3:指定Socket使用的协议
ProtocolType.Tcp:TCP协议
ProtocolType.Udp:UDP协议

IPEndPoint()
是一个IP地址和端口号的集合

IPAddress.Parse("127.0.0.1")

把字符串转换为IPAddress实例

2、服务器端

static void Main(string[] args)
{
    //1.创建socket
    Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    //2.绑定IP和端口号
    EndPoint point = new IPEndPoint(IPAddress.Parse("172.168.33.33"), 6666);
    tcpServer.Bind(point); //绑定方法

    //3.开始监听,等待用户连接
    tcpServer.Listen(100); //监听方法,最大连接数为100
    Socket tcpClient = tcpServer.Accept(); //等待连接,此为阻塞方法
    Console.WriteLine("客户端连接。。。");

    //4.接收用户发送的消息
    byte[] data = new byte[1024];
    int length = tcpClient.Receive(data); //接收数据data
    string str = Encoding.UTF8.GetString(data); //字节数组转换为string
    Console.WriteLine("接收到客户端的数据为:" + str);

    Console.ReadKey();

}

3、客户端

static void Main(string[] args)
{
    //1.创建socket
    Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    //2.发起连接请求
    EndPoint point = new IPEndPoint(IPAddress.Parse("172.168.33.33"), 6666);
    tcpClient.Connect(point); //连接

    //3.向服务器发送消息
    byte[] data = Encoding.UTF8.GetBytes("Hello I am Ffly");
    tcpClient.Send(data);  //发送数据

    Console.ReadKey();

}

4、效果

  1. 先运行服务器窗口
  2. 再运行客户端窗口
  3. 在服务器的窗口上会显示客户端的连接消息