2025年C Socket客户端与服务端通信_TCP和UDP

C Socket客户端与服务端通信_TCP和UDP客户端与服务端通信主要有两种模式 一种是 TCP 一种是 UDP UDP 速度最快 客户端只管发送 服务端是能接多少就接多少 一般应用到游戏行业 而 TCP 会保证两边能接收成功 下面做了一个简单的客户端与服务端通信的软信 聊天软件 以备后查 服务端 1 创建监听端口 IPAddress ip

大家好,我是讯享网,很高兴认识大家。

UDP速度最快,客户端只管发送,服务端是能接多少就接多少。一般应用到游戏行业。而TCP会保证两边能接收成功。下面做了一个简单的客户端与服务端通信的软信(聊天软件),以备后查:

服务端:

1:创建监听端口

IPAddress ip = IPAddress.Any; Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint point = new IPEndPoint(IPAddress.Any, 1456);//监听端口为1456 socketWatch.Bind(point); socketWatch.Listen(10);//最多接收10个客户端 textBox3.AppendText("启动服务成功");

讯享网

2:需设置全局变量:

Socket? socketfwq;//服务端服务

Dictionary<string, Socket> keyValuePairs = new Dictionary<string, Socket>(); //把客户端的保存

讯享网byte[] buffer = new byte[1024]; Task.Run(() => { while (true) { socketfwq = socketWatch.Accept(); keyValuePairs.Add(socketfwq.RemoteEndPoint.ToString(), socketfwq); BeginInvoke(new Action(() => { comboBox1.Items.Add(socketfwq.RemoteEndPoint.ToString()); comboBox1.SelectedItem = socketfwq.RemoteEndPoint.ToString(); })); Task.Run(() => { while (true) { int i = socketfwq.Receive(buffer); string relust = Encoding.UTF8.GetString(buffer, 0, i); BeginInvoke(new Action(() => { textBox3.AppendText("\r\n" + relust); })); } }); } });

3:服务端发送数据给客户端,有多个客户端,所以需选择combox1进行选择,而前面以已经用字典

Dictionary<string, Socket> keyValuePairs = new Dictionary<string, Socket>(); //把客户端的保存

所以直接调用字典发送。

keyValuePairs[comboBox1.SelectedItem.ToString()].Send(Encoding.UTF8.GetBytes(textBox4.Text)); textBox3.AppendText($"\r\n {comboBox1.SelectedItem.ToString()} :" + textBox4.Text);


讯享网

1:设置全局变量:static Socket? ClientSocket;//客户端

当连接成功后就告知服务器客户端连接成功,然后就环循环接收数据。

讯享网ClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPAddress ip = IPAddress.Parse("192.168.254.8"); IPEndPoint endPoint = new IPEndPoint(ip, 1456); ClientSocket.Connect(endPoint); textBox2.AppendText("连接成功:" + ClientSocket.LocalEndPoint.ToString()); ClientSocket.Send(Encoding.UTF8.GetBytes($"\r\n {ClientSocket.LocalEndPoint.ToString()}:客户端连接成功")); //comboBox1.Items.Add(ClientSocket.LocalEndPoint); byte[] buffer = new byte[1024]; Task.Run(() => { while (true) { int i = ClientSocket.Receive(buffer); BeginInvoke(new Action(() => { textBox2.AppendText($"\r\n{ClientSocket.RemoteEndPoint}:" + Encoding.UTF8.GetString(buffer, 0, i)); })); } });
ClientSocket.Send(Encoding.UTF8.GetBytes($"{ClientSocket.LocalEndPoint.ToString()}:" + textBox1.Text)); textBox2.AppendText($"\r\n {ClientSocket.LocalEndPoint.ToString()} :" + textBox1.Text);

b236e65358d3a93fc0d2155732de5728.png

https://gitee.com/XiongYunSehng/csharp_socket_learning

技术群: 需要进技术群学习交流的请添加小编微信,切记备注:加群,对以上内容有什么疑问也可以直接和小编直接沟通交流!     

小编微信:mm   

公众号:dotNet编程大全   

小讯
上一篇 2025-03-16 07:15
下一篇 2025-01-15 22:25

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/125903.html