我可以使用相同的 IP 地址與 socketTest 通信,但在 UNITY 中我收到一條錯誤訊息
SocketException: 請求的地址在背景關系??中無效。
我試過
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(new IPEndPoint(IPAddress.Parse(sHostIpAddress), nPort));
sHostIpAddress是不是 127.0.0.1
我該如何解決?
uj5u.com熱心網友回復:
這不是真正特定的,Unity而是c#一般的。
Socket.Bind用于將套接字系結到特定的本地端點!例如,您想將套接字限制為特定的本地網路配接器/地址(默認情況下它將使用任何/全部)或特定的本地埠(默認情況下它將選擇任何空閑的本地埠)
Bind如果您需要使用特定的本地端點,請使用該方法。您必須先呼叫,Bind然后才能呼叫該Listen方法。除非需要使用特定的本地端點,否則在使用該方法之前不需要呼叫BindConnect。
通常,您Bind主要用于服務器端偵聽和等待傳入連接或用于無連接協議,例如UDP.
您很可能只是想使用Socket.Connect來建立與遠程服務器的連接。
當使用Connectwithout Bindthen 時,它將簡單地選擇它認為最適合到達給定主機地址的網路配接器/地址,并選擇下一個可用的本地埠。
但是,總的來說,我建議使用TcpClient而不是Socket“手動”組合和配置(除非用例需要它)。
var tcpClient = new TcpClient(sHostIpAddress, nPort);
此建構式將自動開始連接嘗試。TcpClient是一個IDisposable并在處理它時清除底層套接字、流等。它也(在我看來)更容易配置和發送和接收資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/371043.html
