全て。
TCP メッセージングにはオープン ソース ライブラリ stlplus を使用します。私の仕事のスキームは次のとおりです。
サーバーアプリケーションとクライアントアプリケーションがあります。それらは実行され、反対側が現れるのを待ってから、接続してメッセージを交換することができます。接続は、サーバーの IP アドレスとポート番号を使用して作成されます。
私の有線ローカルネットでは、すべて正常に動作します。プログラムは 1 つしか実行されていない場合は接続されず (明らかなようですが、さらに詳しく説明します)、接続されている場合は問題なくメッセージを交換します。
その後、ワイヤレスネットでテストすることにしました。そのため、あるノートブックでホストされたネットワークを作成し、別のノートブックから接続しました。また、2台のコンピューターのホームグループを作成しました。コンピューター間の 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;
}