请原谅,因为我无法在不描述我的场景的情况下构建问题。我的场景如下所述,
我有两台机器 machine1 和 machine2 都有自己的 IP 地址。现在我想在它们之间交换消息,我想在一个端口 50 中从 amachine1 向 machine2 发送消息,并在端口号 51 接收来自 machine2 的消息。 我该如何实现,我很困惑是否要在每台机器上为发送和接收创建两个套接字?或者只是不同的端口就可以完成这项工作。我正在使用 C 语言和 Ubuntu linux。提前致谢。
MACHINE1 MACHINE2
| |
| sendto |
port 50 ----------------------------------> |
| |
| recvfrom |
port51 <-------------------------------- |
| |
| |
最佳答案
如果您只想发送和接收数据,TCP/IP 连接就可以了。您需要选择这些机器中的一台作为服务器,例如,一台将在端口 50(服务器)上监听,客户端将连接到它。
您也可以使用 UDP 并在两台不同的机器上使用相同的端口。这是一个选择问题,取决于您要对应用程序执行的操作。
使用 TCP:
机器 1 - 在端口 50 上监听
机器 2 - 连接到机器 1:50
通过此连接,您可以发送和接收数据。
使用 UDP:
机器 1 - 绑定(bind)到端口 50
机器 2 - 绑定(bind)到端口 50
机器1和机器2的IP不同。现在您可以从组合 IP:port 发送和接收数据。
您可以在此处找到示例 (TCP/IP):http://www.thegeekstuff.com/2011/12/c-socket-programming/
对于 UDP,此处:http://gafferongames.com/networking-for-game-programmers/sending-and-receiving-packets/
关于套接字的数量,在您的示例中,连接的每一侧都需要一个套接字,或者每台机器一个。当您打开套接字时,您就可以发送和接收数据。我们说连接是双向的。
关于c - 用于发送和接收的单套接字多端口或多套接字多端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21747429/