【发布时间】:2013-11-29 23:30:41
【问题描述】:
如何从一台机器发送数据包并让另一台机器取走它?
我能看到的唯一方法是,如果每台机器都创建一个 IP:port 端点,然后我手动将机器 A 的 IP:port 输入机器 B,反之亦然。
目前我让它在我的 MacBook 上的两个应用程序之间工作:机器 A(一个处理脚本)向 localhost:5000 发送一个数据包
void UDPSendMessage( String message )
{
String ip = "localhost"; // the remote IP address
int port = 5000; // the destination port
udp.send( message, ip, port );
print( "sending: " + message + "\n" );
}
我的 C#/.NET 套接字接收器将其接收:
IPAddress ip = IPAddress.Any;
IPEndPoint ep = new IPEndPoint( ip, 5000 );
Socket S = new Socket(
ip.AddressFamily,
SocketType.Dgram,
ProtocolType.Udp
);
S.Bind( ep );
S.BeginReceive(...)
但是通过家庭网络我将无法使用 localhost,而且我不喜欢硬编码端口号的想法:如果其中一台机器已经在使用该端口怎么办?
那么在没有任何先验知识的情况下,如何让机器 A 发出信号并让机器 B 接收信号?
【问题讨论】:
-
选择一个硬编码的端口号正是您需要做的。这就是已建立的应用程序和协议使用已知端口号进行通信的方式。以下是常见的列表:List of TCP and UDP port numbers.
标签: sockets network-programming udp ip localhost