首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# UdpClient.Send 拋出「非連接的 Socket 不允許此操作」

     編輯:程式設計綜合問答

代碼:

IPEndPoint ep = new IPEndPoint(IPAddress.Any, 5300);
UdpClient client = new UdpClient(ep);
client.Send(data, data.Length); // 報錯

原因

`UdpClient` 建構子傳入本地端點僅為**繫結本地埠**,並未建立遠端連線。UDP 是無連線協定,`Send(byte[])` 多載**要求 Socket 已連線**(即已呼叫 `Connect(remoteEP)`)。

解決

  • 改用 Send(byte[], int, IPEndPoint remoteEP) 多載,每次指定遠端 IP/Port。
    client.Send(data, data.Length, remoteEP);
  • 或先呼叫 client.Connect(remoteEP),後續可用無參 `Send`,但鎖定單一遠端。

建議:UDP 通訊多為多目標,優先使用帶遠端端點的 `Send` 多載。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved