我在試圖構建一個netowrk應用程序。我成功地製作了一個發送和接收包的服務器。到目前爲止,測試已經在一臺指向127.0.0.1的計算機上完成(沒有像家一樣的地方)。現在我想切換到網絡。我如何找到正在監聽特定端口的LAN網絡上的計算機?在網絡中查找開放的TCP端口
5
A
回答
4
該服務將需要監聽broadcast messages已知端口上(如果你想成爲真正表現良好,你可以register the program and port number with the IANA),當它聽到它回覆給發送方服務器的IP和服務是什麼端口廣播消息監聽傳入的連接。
下面是一個簡單的例子,從上面的鏈接,這只是打印到控制檯誰連接,並在什麼端口,但您可以使用此信息建立兩個端點之間的TCP或UDP連接。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
class RecvBroadcst
{
public static void Main()
{
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050);
sock.Bind(iep);
EndPoint ep = (EndPoint)iep;
Console.WriteLine("Ready to receive…");
byte[] data = new byte[1024];
int recv = sock.ReceiveFrom(data, ref ep);
string stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}",
stringData, ep.ToString());
data = new byte[1024];
recv = sock.ReceiveFrom(data, ref ep);
stringData = Encoding.ASCII.GetString(data, 0, recv);
Console.WriteLine("received: {0} from: {1}",
stringData, ep.ToString());
sock.Close();
}
}
這裏作爲psudo例子是事件對我會怎麼做它的序列。
對於這個例子,假設我們有一個IP爲192.168.1.0
的網絡和一個255.255.255.0
的子網。我們有兩臺服務器,Server1
在192.168.1.2
服務偵聽端口1234
和Server2
在192.168.1.3
端口爲4567
服務。兩者都在廣播消息的端口3000
上列出。連接客戶端將在IP 192.168.1.4
- 客戶選擇在dynamic port range(49152-65535)一個隨機端口並結合到其上的UDP(端口50123對於本示例)並監聽。
- 客戶端使用同一端口發送到他正在監聽的廣播地址和本地子網的已知端口(
192.168.1.255:3000
)。他發送某種有效負載,以便服務器只發送給您的客戶端,而不是與您碰巧使用相同端口的其他人。 (可以說它發送字符串Send me your info for XYZ app!
) - Server1接收廣播。檢查消息是
Send me your info for XYZ app!
並將UDP消息Name:Server1 IP:192.168.1.2 Port:1234
發送回發件人源端口和IP組合(192.168.1.4:50123
) - Server2也收到廣播。檢查消息是
Send me your info for XYZ app!
,並將UDP消息Name:Server2 IP:192.168.1.3 Port:4567
消息發送回發件人源端口和IP組合(192.168.1.4:50123
) - 客戶端在發送消息的同一端口上接收到兩個UDP消息。他解析答覆並向用戶顯示可用於連接的兩臺服務器。
相關問題
- 1. 查找開放端口TCP通信
- 2. standrad尋找服務的方法(在本地網絡中開放端口)
- 3. 掃描Android中的開放網絡端口
- 4. 在機器上查找可用的網絡端口
- 5. Shodan。獲取網絡的所有開放端口
- 6. 檢查C++中的開放UDP端口
- 7. 檢查C/C++中的開放端口
- 8. iOS/Objective-C中的TCP客戶端 - 檢查打開端口
- 9. 如何打開TCP端口
- 10. Docker Compose不公開網絡端口
- 11. 網絡端口IO
- 12. 檢查傳出的網絡端口443上張開,用VB6
- 13. 插座網絡TCP/IP和端口的一些澄清
- 14. 在運行在特定端口上的網絡中查找服務器
- 15. 檢查本地TCP端口未在Java中打開
- 16. C++檢查TCP端口
- 17. 在Raspbian上打開TCP端口
- 18. 互聯網協議端口vs TCP端口vs UDP端口
- 19. 找不到開放端口python
- 20. 帶有開放式TCP端口的免費網頁主機? (需要4個websocket)
- 21. NodeJS幫助代理TCP端口數據到網絡套接字
- 22. 如何查找goDaddy專用服務器上的開放端口?
- 23. Rtmidi開放端口?
- 24. 如何在域網絡中打開端口防火牆
- 25. 網絡TCP客戶端連接
- 26. 如何查找網絡接口名稱
- 27. XNA Tcp網絡
- 28. 查找*可以打開的端口
- 29. TCP - JAVA - 如何在本地網絡上查找服務器?
- 30. 找到兩個免費的TCP端口
給出該機器的ip而不是127.0.0.1 – Adil
你只關心子網或者你想檢查可能在其他子網中的計算機嗎? –
是的,但我的問題是找到實際的端口。這樣我就可以使用它,而不用硬編碼IP的 – Samyn