簡體   English   中英

C#GetHostEntry IPV6

[英]C# GetHostEntry IPV6

我正在嘗試構建一個客戶端/服務器程序,以基於客戶端輸入來傳輸某些方程式的結果。 使用127.0.0.1可以使它正常工作,但是由於我想將其發送給客戶端,因此無法使用。 並非所有客戶端都會在LAN上,並且會通過WAN傳輸。 這是我的代碼片段

            IPHostEntry ipHostInfo = Dns.GetHostEntry("127.0.0.1");
            IPAddress ipAddress = ipHostInfo.AddressList[0];
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);

            // Create a TCP/IP socket.  
            Socket client = new Socket(ipAddress.AddressFamily,
                SocketType.Stream, ProtocolType.Tcp);

我已經嘗試使用外部IPV4地址,但是甚至無法ping通它,但是我可以ping通IPV6地址,並且寧願使用它。 但是,當我輸入IPV4地址時,程序根本無法連接。 有什么建議嗎?

編輯好吧,所以我設法通過兩台不同的局域網計算機連接它們,但是在發送一兩次局域網客戶端后,

套接字已連接到192.168.1.6:11000 System.Net.Sockets.SocketException(0X80004005):不允許發送或接收數據的請求,因為未連接套接字,並且(當使用sendto調用在數據報套接字上發送時)沒有地址在System.Net.Sockets.Socket.BeginSend(Byte []緩沖區,int32偏移量,int32大小,Socket標志socketFlags,AsyncCallback回調,對象狀態)處提供,位於ConsoleApp1.Form1.Send(套接字客戶端,字符串數據)在(FileLocation)中在(FileLocation)第177行的ConsoleApp1.Foorm1.button1_Click(Object sender,EventArgs e)處的第111行

您可以使用IPAddress.Any偵聽所有地址以克服此問題:

// Create a TCP/IP socket.  
var client = new Socket(IPAddress.Any.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
client.Bind(new IPEndPoint(IPAddress.Any, 11000));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM