【问题标题】:Using stlplus library connect in wired network and do no connect in wireless使用 stlplus 库连接有线网络,不连接无线
【发布时间】:2016-02-12 17:51:32
【问题描述】:

全部。

我使用开源库 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;
}

【问题讨论】:

    标签: c++ tcp network-programming network-connection


    【解决方案1】:

    我解决了这个问题。

    不确定我是否解决了问题的根源,但谁知道呢。 在这里我写解释以防万一有人遇到同样的问题,或者只是可以添加一些内容以使其更清楚。

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

    我试图在 ip_socket 类中调试它,但多线程存在问题。所以,我创建了一个互斥体,它在服务器创建之前被锁定并在之后立即解锁。

    之后所有问题都消失了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多