如何在没有侦听器的情况下创建TCP连接?

BubLblckZ

我目前正在使用Winsock 2开发C ++网络程序,这是一个聊天程序,两台计算机之间没有服务器。如果没有一个用户被迫运行具有侦听器的服务器程序,这将很方便,这将使他们不得不向前移植。当然,这将要求他们两个都输入彼此的IP,但这没关系。有没有一种方法可以通过在两台不同的计算机上运行相同的客户端程序,使用相同的端口并各自输入另一台计算机的IP而不用进行端口转发来创建TCP连接?

x

尽管您需要呼叫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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在没有侦听器的情况下从Firebase数据库检索数据?

如何在JavaFX中在没有侦听器的情况下检查键是否按下?

XML onClick 如何在没有事件侦听器的情况下工作?

如何在没有事件侦听器的情况下检查数据是否仅存在于 firebase 数据库中一次

在没有侦听器的情况下获取鼠标位置

为什么我的 WASAPI 侦听器即使在没有播放的情况下也会触发?

事件侦听器在没有事件的情况下执行并遍历HTML集合

在没有多个事件侦听器的情况下检测表单commit()?

如何在没有部署描述符的情况下在Spring中注册侦听器

如何在没有匿名函数的情况下设置事件侦听器?(不失去范围)

Amazon ALB:如何在没有自定义域的情况下设置HTTPs侦听器

如何在不引用它的情况下删除 firebase 事件侦听器?

如何在不使用事件侦听器的情况下检查单击的元素?

如何在没有互联网连接的情况下创建热点?

如何在没有 rdp 的情况下连接到 AWS Windows 服务器?

如何在没有路由器的情况下正确建立与远程主机的连接?

如何在没有上下文管理器的情况下连接到WebSocket?

如何在没有ObjectNode的情况下创建ValueNode?

如何在没有PGID的情况下创建链接

如何在没有 ThreadGroup 的情况下创建线程?

如何在没有android studio的情况下创建android模拟器?

如何在没有主机编译器的情况下创建Cuda模块

gtkmm:如何在没有构建器的情况下创建弹出菜单?

Java-在没有鼠标侦听器的情况下请求专注于单击的简单方法?

<a> 标签上的 JavaScript 函数在没有调用的情况下执行,甚至我应用了 onClick 事件侦听器

如何在不随机执行函数的情况下将变量传递给具有事件侦听器的函数

Android View XML中的数据绑定条件语句过多,如何在没有附加侦听器的情况下移入ViewModel

如何在不将事件侦听器放在 HTML 标记中的情况下获取事件目标/这个?

如何在不使用任务侦听器的情况下获取Firebase身份验证令牌?