Используя библиотеку stlplus, подключайтесь по проводной сети и не подключайтесь по беспроводной

все.

Я использую открытую библиотеку stlplus для tcp-сообщений.
Схема моей работы следующая.

У меня есть серверное приложение и клиентское приложение. Они могут быть запущены и ждать появления другой стороны, затем подключаться и обмениваться сообщениями. Соединение создается с использованием IP-адреса сервера и номера порта.

В моей проводной локальной сети все отлично работает. Программы не подключаются, если запущена только одна (кажется очевидным, но читайте дальше), и при подключении обмениваются сообщениями с вами без каких-либо проблем.

После этого я решил проверить их в беспроводной сети. Поэтому я создал размещенную сеть на одном ноутбуке и подключился к ней с другого. Также я создал домашнюю группу из двух компьютеров. Пинг (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;
}

0

Решение

Я решил проблему.

Не уверен, что я лечил корень проблемы, но кто знает.
Здесь я пишу объяснения на случай, если кто-то столкнется с той же проблемой или просто может что-то добавить, чтобы сделать ее более понятной.

Моя заявка была организована следующим образом:
был класс, в котором я запускаю сервер в отдельном потоке. У меня есть два экземпляра этого класса,
поэтому два сервера были созданы примерно в одно и то же время. И, как я обнаружил, его нельзя инициализировать сообщением об ошибке 10093 (либо WSAStartup еще не вызывается, либо WSACleanup уже вызывается).

Я пытался отладить это внутри класса ip_socket, но были проблемы с многопоточностью. Итак, я сделал мьютекс, который заблокирован непосредственно перед созданием сервера и разблокирован сразу после.

После этого все проблемы исчезли.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]