c#网络Tcp和udp

TCP 通信


TCP 服务端

csharp 复制代码
Socket tcpServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 1, 5 });
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 7788);
tcpServer.Bind(ipEndPoint); // 绑定IP和端口号
tcpServer.Listen(100); // 设置最多有100人连接
Console.WriteLine("开始接客了...");
Socket client = tcpServer.Accept();
Console.WriteLine("一个客户端连接过来了!");

// 接收消息
byte[] data = new byte[1024];
int length = client.Receive(data);
string msg = Encoding.UTF8.GetString(data, 0, length);
Console.WriteLine("接收到了客户端的消息:" + msg);

// 发送消息
client.Send(Encoding.UTF8.GetBytes("来了,随便坐"));

client.Close();
tcpServer.Close();

TCP 客户端

csharp 复制代码
Socket tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 1, 5 });
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 7788);
tcpClient.Connect(ipEndPoint);
Console.WriteLine("连接上服务器端了!");

// 发送消息
string msg = "我上线了";
tcpClient.Send(Encoding.UTF8.GetBytes(msg));

// 接收消息
byte[] data = new byte[1024];
int length = tcpClient.Receive(data);
Console.WriteLine("收到服务器端的消息:" + Encoding.UTF8.GetString(data, 0, length));

tcpClient.Close();

TCP 和 UDP 的区别


  • 基于连接(TCP)和无连接(UDP)
  • 对系统资源的要求(TCP 较多,UDP 少)
  • UDP 程序结构较简单
  • 流模式(TCP)与 数据报模式(UDP)
  • TCP 保证数据的正确性,UDP 可能丢包
  • TCP 保证数据顺序,UDP 不保证

UDP 通信


UDP 服务端

csharp 复制代码
Socket udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 1, 5 });
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 7788);
udpServer.Bind(ipEndPoint);

IPEndPoint ipEndPoint2 = new IPEndPoint(IPAddress.Any, 0);
EndPoint ep = (EndPoint)ipEndPoint2;
byte[] data = new byte[1024];
int length = udpServer.ReceiveFrom(data, ref ep); // 接收数据
Console.WriteLine("接收到数据:" + Encoding.UTF8.GetString(data, 0, length));

udpServer.Close();

UDP 客户端

csharp 复制代码
Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
IPAddress ipAddress = new IPAddress(new byte[] { 192, 168, 1, 5 });
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 7788);
byte[] data = Encoding.UTF8.GetBytes("您好,客户端上线了!");
udpClient.SendTo(data, ipEndPoint); // 发送数据

udpClient.Close();
相关推荐
Zaralike3 小时前
Linux 服务器网络不通排查 SOP(标准操作流程)
linux·服务器·网络
云姜.3 小时前
网络协议----OSI七层网络协议 和 TCP/IP四层(五层)网络协议
网络·网络协议
!chen3 小时前
LabVIEW TCP Server端工具TCP通信
网络·tcp/ip·labview
大空大地20263 小时前
流程控制语句--switch多分支语句使用、while循环语句的使用、do...while语句、for循环
c#
枷锁—sha4 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
郝学胜-神的一滴4 小时前
深入解析C/S模型下的TCP通信流程:从握手到挥手的技术之旅
linux·服务器·c语言·网络·网络协议·tcp/ip
池央4 小时前
CANN 算子诊断与故障定位:oam-tools 在异构计算错误解析中的作用
网络
“αβ”4 小时前
数据链路层协议 -- 以太网协议与ARP协议
服务器·网络·网络协议·以太网·数据链路层·arp·mac地址
释怀不想释怀4 小时前
Linux网络基础(ip,域名)
linux·网络·tcp/ip
开开心心就好4 小时前
AI人声伴奏分离工具,离线提取伴奏K歌用
java·linux·开发语言·网络·人工智能·电脑·blender