使用相同套接字在同一应用程序中使用不同协

时间:2011-12-20 09:53:51

标签: c# sockets udp client-server

我可以在同一个套接字上发送和接收UDP数据报,我用于TCP通信。在我的应用程序中存在多媒体通信,我必须使用UDP进行通信。如果我创建一个新套接字,它会抛出属性的异常 LingerState NoDelay 。当我将旧套接字实例分配给其他Socket变量时,它不允许我更改属性,因为大多数属性都是只读的。必须在TCP连接区域中发送数据。

* 代码*

Socket SendingSocket = new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp); IPEndPoint Endp =新的IPEndPoint(IPAddress.Parse(“192.168.3.233”),端口);

SendingSocket.Bind(ENDP);

while(SendingSocket.Connected)
{  string Message =“测试通过UDP发送的消息”; ASCIIEncoding Encode = new ASCIIEncoding(); byte [] MessageBytes = Encode.GetBytes(Message); SendingSocket.SendTo(MessageBytes,0,MessageBytes.Length,SocketFlags.None,Endp); }“

2 个答案:

答案 0 :(得分:1)

很难从该代码片段中分辨出来,但可能您不需要SendingSocket.Bind(Endp),因为您的SendingSocket.SendTo也包含IP端点。也可以尝试简单地

SendingSocket.SendTo(MessageBytes, Endp);

答案 1 :(得分:0)

没有。您不能对TCP和UDP使用相同的套接字。套接字只绑定一个协议。