客户端 - 服务器代码。如何将数据连接绑定到特定端口

时间:2012-03-16 20:20:38

标签: sockets unix client

我正在尝试执行以下操作:

我们假设我在机器X上启动TCPServer。现在,我想从机器Y连接到TCPServer,但是我想指定应该进行数据通信的端口(发送器和接收器)。此外,TCPServer同时处理多个客户端。

MachineX:./ TCPServer MachineY:./ TCPClient -SP 5000 -DP 5000

我已经编写了多线程服务器的代码(使用C UNIX),它运行正常。基本上,它为每个连接产生一个线程。但我不确定如何包含上述功能。

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

在调用connect()之前,请调用bind()。

我假设您必须为服务器代码执行此操作,对吧?否则,如何让您的服务器(在MachineX上运行)监听端口5000。

在任何情况下,这是一个绑定到localhost端口5000的C示例。

示例:

int sock = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in addrRemote = {};
sockaddr_in addrLocal = {}; // zero init so that sin_addr is already INADDR_ANY;
int result;

addrLocal.sin_family = AF_INET;
addrLocal.sin_port = htons(5000);
result = bind(sock, (sockaddr*)&addrLocal, sizeof(addrLocal));
if (result < 0)
    return;

addrRemote.sin_family = AF_INET;
addrRemote.sin_port = htons(5000);
addrRemote.sin_addr = <ip of MachineX in network byte order>;

result = connect(sock, (sockaddr*)&addrRemote, sizeof(addrRemote));
if (result < 0)
    return;

假设在机器X上运行的TCPServer正在侦听端口5000。