我目前正在使用Winsock 2开发C ++网络程序,这是一个聊天程序,两台计算机之间没有服务器。如果没有一个用户被迫运行具有侦听器的服务器程序,这将很方便,这将使他们不得不向前移植。当然,这将要求他们两个都输入彼此的IP,但这没关系。有没有一种方法可以通过在两台不同的计算机上运行相同的客户端程序,使用相同的端口并各自输入另一台计算机的IP而不用进行端口转发来创建TCP连接?
尽管您需要呼叫bind
以允许另一台机器连接到该端口,但是您不需要呼叫accept
。
只要两个进程都bind
在其接受端口上进行了调用,然后假定该地址sin
已初始化为适当的目的地,则每个进程都可以使用如下所示的循环对称地相互连接:
while (connect(s, sin, slen) < 0) {
if (errno == ECONNREFUSED) continue;
perror("connect");
_exit(0);
}
这是TCP状态机图中的“同时打开”情况。双方同时发送SYN,因此双方以SYN / ACK进行响应。双方发送ACK完成三向握手后,双方进入ESTABLISHED状态。
在线试用不支持线程或访问环回,但确实允许我方便地介绍完整的编码示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句