使用stlplus库在有线网络中连接,在无线网络中不连接

Using stlplus library connect in wired network and do no connect in wireless

本文关键字:连接 无线网络 不连接 stlplus 使用 网络      更新时间:2023-10-16

all。

我使用开源库stlplus进行tcp消息传递。我的工作计划是下一步。

我有服务器应用程序和客户端应用程序。它们可以运行并等待另一方出现,然后连接并交换消息。使用服务器ip地址和端口号创建连接。

在我的有线本地网络中,一切都很好。如果只有一个程序在运行(这似乎很明显,但请进一步阅读),并且在连接时交换消息时没有任何问题,则程序不会连接。

之后,我决定在无线网络中测试它们。所以我在一个笔记本上创建了托管网络,并从另一个笔记本连接到它。我还创建了两台计算机的家庭组。计算机之间的Ping(ip和端口)是可以的。我甚至可以使用windows的msg.exe发送消息。

现在是问题所在。客户端程序表示(在日志中写入)它连接到服务器,甚至在服务器未运行时发送消息。怎么可能呢?我可以省略哪些设置?在有线网络中长期使用未发现此类问题。

我甚至在防火墙中制定了特殊的允许规则,甚至在完全关闭后,情况仍然如此。

我不知道下一步该检查什么或做什么。

我用这个代码做了一个最简单的硬编码样本,结果是一样的((

我得到了无限的"连通"这个词//==============================================

#include <iostream>
// stlplus
#include "portability.hpp"
#include "strings.hpp"
using namespace stlplus;
int INI_TCP_TIMEOUT = 10000000;
int main (int argc, char* argv[])
{
  stlplus::TCP_client tcpClient("192.168.173.1", 139, INI_TCP_TIMEOUT);
  if (false == tcpClient.initialised() ) 
  {
    std::cout << "client: retry";
    return 0;
  }
  if (false == tcpClient.connected()) 
  {
    std::cout << "client: retry";
    return 0;
  }
  while (true == tcpClient.connected()) 
  {
    std::cout << "connected; n";
  }
  return 0;
}

我解决了这个问题。

不确定我是否治疗了问题的根源,但谁知道呢。在这里,我写下解释,以防有人遇到同样的问题,或者只是可以添加一些东西来让它更清楚。

我的申请是按以下方式组织的:有一个类,我在单独的线程中启动服务器。我有两个该类的实例,因此大约在同一时间创建了两个服务器。正如我发现的那样,一个无法用错误消息10093初始化(WSAStartup尚未调用或WSACleanup已调用)。

我试图在ip_socket类中调试它,但多线程出现了问题。因此,我制作了一个互斥锁,它在创建服务器之前被锁定,然后立即解锁。

在那之后,所有的问题都消失了。