2017-04-26 97 views
0

爲什麼不能正常工作?如何通過UDP將數據從服務器傳遞到客戶端?

  Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); 
     IPEndPoint ipserv = new IPEndPoint(IPAddress.Parse("46.174.48.47"), 46535); 
     IPEndPoint ipLoc = new IPEndPoint(IPAddress.Parse("86.64.47.13"), 755); 
     client.Connect(ipserv); 
     byte[] data = Encoding.UTF8.GetBytes(Console.ReadLine()); 
     client.Send(data); 
     client.Bind(ipLoc); 
     client.Receive(data); 
     Console.WriteLine(data); 

錯誤: 型「System.Net.Sockets.SocketException」 System.dll中 附加信息的未處理的異常:收到無效的參數

我從控制檯發送到服務器的文本,然後想要從服務器上取回它。怎麼做?

+0

服務器在ipLoc上發送數據 –

回答

0

我認爲服務器和客戶端的IPAndress是一樣的

+0

端口是相同的。 –

0

你並不特定發生異常的位置。但是,看代碼,我猜想它發生在client.Bind()方法調用上。原因在於,當您撥打client.Send()時,網絡層在此時爲您的套接字分配一個端口號。然後嘗試撥打Bind()來分配本地IP地址和端口號將會失敗,因爲端口號無法更改並且已被分配。

你的問題是在細節上稀疏,但我會建議你不要用ipLoc在所有的麻煩。只有服務器端點需要有固定的端口號。最好讓客戶端套接字使其端口(和IP地址)由網絡層隱式分配。

如果這不能解決您的問題,請改進問題,以便它包含一個很好的Minimal, Complete, and Verifiable code example,它可以可靠地重現問題,並更詳細地解釋發生了什麼。確保包含任何錯誤消息的確切文本以及任何拋出異常的完整堆棧跟蹤。

相關問題