我在试图构建一个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