【发布时间】:2012-01-24 07:23:24
【问题描述】:
我可以在同一个套接字上发送和接收 UDP 数据报吗,我用于 TCP 通信。我的应用程序中存在多媒体通信,我必须使用 UDP 进行通信。如果我创建一个新套接字,它会引发属性异常LingerState 和 NoDelay。当我将旧 Socket 实例分配给其他 Socket 变量时,它不允许我更改属性,因为大多数属性都是只读的。我必须在 TCP 连接区域发送数据。
*代码*
Socket SendingSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint Endp = new IPEndPoint(IPAddress.Parse("192.168.3.233"), port);
SendingSocket.Bind(Endp);
while (SendingSocket.Connected)
{
string Message = "测试通过 UDP 发送的消息"; ASCIIEncoding 编码 = new ASCIIEncoding();
byte[] MessageBytes = Encode.GetBytes(Message);
SendingSocket.SendTo(MessageBytes, 0, MessageBytes.Length, SocketFlags.None, Endp); }'
【问题讨论】:
-
TCP 和 UDP 的工作方式完全不同。 TCP 保持客户端/服务器之间的持续连接,直到它被关闭/丢弃。 UDP没有。我见过的任何需要两者的软件都有两个正在使用的套接字,一个用于 TCP,另一个用于 UDP。
-
我只是问这是应用程序的要求。我已经分开沟通了
标签: c# sockets udp client-server