我正在尝试执行以下操作:
我们假设我在机器X上启动TCPServer。现在,我想从机器Y连接到TCPServer,但是我想指定应该进行数据通信的端口(发送器和接收器)。此外,TCPServer同时处理多个客户端。
MachineX:./ TCPServer MachineY:./ TCPClient -SP 5000 -DP 5000
我已经编写了多线程服务器的代码(使用C UNIX),它运行正常。基本上,它为每个连接产生一个线程。但我不确定如何包含上述功能。
感谢您的时间!
答案 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。