单个插槽多个端口或多个插槽多个端口,用于发送和恢复

时间:2014-02-13 07:06:13

标签: c linux sockets

请原谅我,因为我无法在不描述我的情景的情况下构建问题。我的情景如下所述,

我有两台机器machine1和machine2都有自己的IP地址。现在我想在它们之间交换消息,我想从amachine1在一个端口50中向machine2发送消息,并从端口号51的machine2收回消息。 我怎么能实现这一点,我很困惑是否在每台机器上创建两个socket for send和recv?或只是不同的端口将完成这项工作。我使用的是C语言和Ubuntu linux。提前谢谢。

                MACHINE1                                  MACHINE2
                    |                                         |
                    |                 sendto                  |
                 port 50 ---------------------------------->  |
                    |                                         |
                    |                recvfrom                 |
                 port51  <--------------------------------    |
                    |                                         |
                    |                                         |

2 个答案:

答案 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。