可能的重複:UDP Response或Receiving a response through UDP發送UDP數據包到服務器並得到響應
我已經寫在過去的一個月UDP服務器 - 客戶端的設置,並有一個工作的服務器。該服務器旨在成爲一個通訊程序,用於檢索遠程客戶機請求託管的計算機的相關數據。總的想法是概述如下:
客戶端 - >請求數據 - >服務器 - > 進程請求 - >發送響應 - >客戶端
而客戶端接收數據並根據這些數據做它所需要的。
除了客戶端收到數據包並將它們輸出到我的測試控制檯以外,我能夠完成該大綱中的所有操作。如果你想看UdpServer類,這很簡單,但只是評論,我會在這裏編輯它。
以下是我正在如何接收數據(測試應用程序):
執行: 「TEST.EXE <數組索引>」,例如「test.exe的4」 - >執行對204.229.219.35
public class Program {
static void Main(String[] args) {
string pre = "204.229.219";
string[] servers = {
"31", "32", "33", "34", "35", "36",
"37", "38", "39", "40", "41", "42",
"88", "89"
};
if (args.Length < 1)
{
Environment.Exit(1);
}
int idx = Int32.Parse(args[0]);
Console.Title = "UDPSERVERTEST";
UdpClient c = new UdpClient();
Byte[] data = Encoding.ASCII.GetBytes("net user");
IPEndPoint ep = new IPEndPoint(Dns.GetHostEntry(String.Format("{0}.{1}", pre, servers[idx])).AddressList[0], 8915);
Console.WriteLine("\tQuerying: {0}", String.Format("{0}.{1}", pre, servers[idx]));
c.Send(data, data.Length, ep);
UdpState s = new UdpState();
s.endPoint = new IPEndPoint(IPAddress.Any, 0);
s.host = c;
s.encoding = Encoding.ASCII;
ReceiveCallback(s);
Console.ReadKey(true);
}
private static void ReceiveCallback(UdpState s)
{
byte[] data = s.host.Receive(ref s.endPoint);
Console.WriteLine("Data received from ({0}) -> {1}", s.endPoint.ToString(), s.encoding.GetString(data));
}
private static void callback(IAsyncResult ar)
{
UdpState s = (UdpState)ar.AsyncState;
UdpClient u = s.host;
IPEndPoint e = s.endPoint;
byte[] data = u.EndReceive(ar, ref e);
}
}
在任我接收方法,我得到像下面這樣的錯誤:
一個現有的連接被強行 被關閉遠程主機
感謝Stackoverflow!
該錯誤通常表明該端口在服務器上無法訪問,您是否檢查過防火牆以確保它允許傳入連接? – Rory
我在上個月在同一臺兩臺機器上完成了這個工作,此刻我只是想了解如何從我查詢的服務器接收響應數據包。 – Zack