请原谅我,因为我无法在不描述我的情景的情况下构建问题。我的情景如下所述,
我有两台机器machine1和machine2都有自己的IP地址。现在我想在它们之间交换消息,我想从amachine1在一个端口50中向machine2发送消息,并从端口号51的machine2收回消息。 我怎么能实现这一点,我很困惑是否在每台机器上创建两个socket for send和recv?或只是不同的端口将完成这项工作。我使用的是C语言和Ubuntu linux。提前谢谢。
MACHINE1 MACHINE2
| |
| sendto |
port 50 ----------------------------------> |
| |
| recvfrom |
port51 <-------------------------------- |
| |
| |
答案 0 :(得分:1)
如果您只想发送和接收数据,则可以使用TCP / IP连接。您需要选择其中一台机器作为服务器,例如,一台将侦听端口50(服务器),客户端将连接到它。
您也可以使用UDP并在两台不同的计算机上使用相同的端口。这是一个选择问题,它取决于您将如何处理您的应用程序。
使用TCP:
机器1 - 侦听端口50
机器2 - 连接到Machine1:50
通过此连接,您可以发送和接收数据。
使用UDP:
机器1 - 绑定到端口50
机器2 - 绑定到端口50
机器1和机器2的IP不同。现在,您可以从组合IP:端口发送和接收数据。
您可以在此处找到示例(TCP / IP):http://www.thegeekstuff.com/2011/12/c-socket-programming/
和UDP,在这里:http://gafferongames.com/networking-for-game-programmers/sending-and-receiving-packets/
关于套接字的数量,在示例中,连接的每一侧需要一个套接字,或者每台机器需要一个套接字。打开套接字时,您可以发送和接收数据。我们说连接是双向的。
答案 1 :(得分:0)
如果要使用两个端口,则Machine1中需要两个套接字。 在第一个套接字上,您将数据发送到Machin2。 在第二个套接字上,您将侦听端口51,并收听消息。
也可以只使用一个端口, 在这种情况下,单个套接字将同时在Machine1上发送/ recv。