簡易のTCPサーバのフリーソフト

このQ&Aのポイント
  • ESP-WROOM-02というwifiモジュール基板とPCをUART通信で接続する方法について調査中です。
  • 現在の問題は、サーバとの接続を試みると5秒後に自動的に切断されてしまうことです。
  • 別のサーバソフトで接続しても同様の問題が発生するか確認したいと思っています。
回答を見る
  • ベストアンサー

簡易のTCPサーバのフリーソフト

現在、ESP-WROOM-02というwifiモジュール基板とPCとをUART通信で接続しました。 jumpwire.io http://ja.docs.jumpwire.io/ESP8266Reference/ATCommands/ 現在事務所内で使用しているサーバーソフトが起動しているPCのIPアドレスへwifiモジュールを使用して通信を行おうと思い、上記のサイトを参考に、 ”透過送信モード”というモードにATコマンドを送信して設定してサーバーと接続を試みているのですが、 AT+CIPSTART="TCP","192.168.1.158",5000 このコマンドで192.168.1.158:5000で動作させているサーバと接続コマンドを送って”CONNECT”と応答が返ってくるのですが、、5秒程度経過すると”CLOSED”という応答が来てしまいます。 現在この自動でCLOSEDされてしまう問題を調べているのですが、 私は”このサーバ特有の仕様”と現在考えています。 この問題の切り分けとして、別のサーバソフトで接続してみても同様に自動切断されてしまうのかを調べたいと思っているのですが、 このような時に便利な簡易サーバのフリーソフトツールなど、ご教示頂きますよう、よろしくお願い致します。 (透過送信モード時の送信・応答内容) ready WIFI CONNECTED WIFI GOT IP (PC送信)AT (ESP応答)OK (PC送信)AT+CWMODE=3 (ESP応答)OK (PC送信)AT+CWJAP="Buffalo-G-884C","h3htu788pwh3u" (ESP応答)WIFI DISCONNECT (ESP応答)WIFI CONNECTED (ESP応答)WIFI GOT IP (ESP応答)OK (PC送信)AT+CIFSR (ESP応答)+CIFSR:APIP,"192.168.4.1" (ESP応答)+CIFSR:APMAC,"5e:cf:7f:09:c8:76" (ESP応答)+CIFSR:STAIP,"192.168.1.90" (ESP応答)+CIFSR:STAMAC,"5c:cf:7f:09:c8:76" (ESP応答)OK (PC送信)AT+CIPSTART="TCP","192.168.1.158",5000 (ESP応答)CONNECT (ESP応答)OK (ESP応答)CLOSED (PC送信)AT+CIPSTART="TCP","192.168.1.158",5000 (ESP応答)CONNECT (ESP応答)OK (PC送信)fefe (ESP応答)ERROR (ESP応答)CLOSED (PC送信)AT+CIPMODE=1 (ESP応答)OK

質問者が選んだベストアンサー

  • ベストアンサー
  • kawais070
  • ベストアンサー率52% (2242/4282)
回答No.2

どうやら Windows10 には telnetサーバーが無いみたいですね。 とりあえず下記のソフトが動いてくれたりしないかしら? http://www.vector.co.jp/soft/win95/net/se037305.html

techhouse
質問者

お礼

回答頂きありがとうございます。 telnetd動作できました。そして、telnetdで作成したTCPサーバに対してESP-WROOM-02からATコマンド操作でTCP接続ができることが分かりました。 (esp応答)ready (esp応答)WIFI CONNECTED (esp応答)WIFI GOT IP (PC送信)AT (esp応答)OK (PC送信)AT+CWMODE=3 (esp応答)OK (PC送信)AT+CWJAP="Buffalo-G-884C","h3htu788pwh3u" (esp応答)WIFI DISCONNECT (esp応答)WIFI CONNECTED (esp応答)WIFI GOT IP (esp応答)OK (PC送信)AT+CIFSR (esp応答)+CIFSR:APIP,"192.168.4.1" (esp応答)+CIFSR:APMAC,"5e:cf:7f:09:c8:76" (esp応答)+CIFSR:STAIP,"192.168.1.90" (esp応答)+CIFSR:STAMAC,"5c:cf:7f:09:c8:76" (esp応答)OK (PC送信)AT+CIPSTART="TCP","192.168.1.93",8200 (esp応答)CONNECT (esp応答)OK (サーバ応答)+IPD,48:Simple telnet server for Windows95 Version 0.5 (サーバ応答)+IPD,126:Copyright (c) 1996, 1997 by Satoru Satoh All rights reserved. Please send your comment to RL8S-STU@asahi-net.or.jp login: (PC送信)AT+CIPMODE=1 (esp応答)OK (PC送信)AT+CIPSEND (esp応答)OK (esp応答)> (PC送信)****** (PC送信)$ pwd (esp応答)C:\Users\mypc\Downloads\telnetd5 ESP-WROOM-02でこのtelnetdサーバに対しては (PC送信)AT+CIPSTART="TCP","192.168.1.93",8200 (esp応答)CONNECT (esp応答)OK この接続は保持されている感じでした。 なので、私でものサーバでこの時に時間制限などを設けているように感じました。 原因が究明できそうです。大変助かりました。 またtelnetdというソフトは昔からあるCUI系のリモートログインサーバなのですね。長年windows使っていますが、このようなLinuxみたいなことがwindowsでもきたというのを初めて知りました。

その他の回答 (2)

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.3

windows での事情には詳しくないけど、常套句としては nc (netcat) 使うとか?

techhouse
質問者

お礼

回答頂きありがとうございます。 ”netcat”というソフトを初めて知りました。Unix系だとかなりメジャーなソフトのようで、今回のような場合に開発者関係のみなさんは使ってらっしゃるんですね。 ぜひ、活用させていただきます。 助かります。

  • kawais070
  • ベストアンサー率52% (2242/4282)
回答No.1

Windowsであれば、telnetサーバーで良いのでは? http://blogs.yahoo.co.jp/wqcyr956/21834528.html Windowsのtelnetサーバーは、デフォルトがNTLM認証なので、これはOFFにしないと使いづらいですね。 https://sites.google.com/site/kanta01web/faq/windows_telnet telnetはポート番号23です。

techhouse
質問者

お礼

回答頂きありがとうございます。 telnetサーバでもそのようなことができるんですね。 現在使用しているwindows10のPCで telnetサーバをこちらのサイトの内容で有効化しようとしました。 Windows10 - Windows の機能の有効化または無効化 - PC設定のカルマ http://pc-karuma.net/windows-10-turn-windows-features-on-or-off/ しかし、有効化の項目に”telnetサーバ”の項目がありませんでした? この”telnetサーバ”を表示させる方法なども、できれば教えていただけると助かります。 どうぞ、よろしくお願い致します。

関連するQ&A

  • TeraTermでATコマンドを一気に送信したい

    現在ESP-WROOM-02というwifiモジュール基板とPCとをシリアル通信ケーブルで結んで、ESP-WROOM-02の内部設定でwifiのAPのSSID設定などを行いたいと思っています。 【第33回 Arduinoマイコンとしても使える小型WifiモジュールESP-WROOM-02を使ってみる(Wifi通信テスト編) | http://deviceplus.jp/hobby/entry0033/】 上記のサイトで、ATコマンドを送信する際にはArudino IDEというソフトを使用して、設定したATコマンド文字列を一括で送信してくれるような機能があるようなのですが、このような機能をTeraTermでも使用できますでしょうか? どうぞご教示頂きますよう、よろしくお願い致します。

  • TCPサーバ bind関数のエラーについて

    簡易TCPサーバをC言語で構築しています。 サーバ側のプログラムを実行し、クライアントから要求があった(GET / HTTP/1.0)場合に文字列をクライアント側に送信します。テスト一回目は要求通りの機能を果たし無事に終了できました。しかし、1回目と同じように2回目も実行すると、bind()関数でエラーが出ます。自分では一回目の接続で使ったポートが使用され続けてしまっているので、2回目の接続が前の接続に阻まれている(?)のが原因では無いかと思うのですが、これは何が原因なのでしょうか。いくら考えても分かりません。教えて下さい。

  • ESP-WROOM-02で応答文字を受信したい

    現在ESP-WROOM-02というwifiモジュールをH8S2368マイコンに接続してでAPに接続して、サーバにクライアントで接続してデータを送信するというプログラムを作成しています。 サーバと接続してデータ送信できるプログラムを作り、実際にサーバに送信できるようになりました。 ただ、 ESP8266 ATコマンド 一覧 jumpwire.io http://ja.docs.jumpwire.io/ESP8266Reference/ATCommands/ こちらの ”使用例 シングルコネクション (TCPクライアント)” この項目のTCPクライアント接続方法を使用しているのですが、各ATコマンド送信後にESP-WROOT-02から返される応答キャラクタは正確に取れず、現在は無視している状態です。 これを正確に取得してフラグとして使用したいと考えています。 例えば、サーバに接続する際のATコマンドコード sprintf(cmd,"AT+CIPSTART=\"TCP\",\"192.168.1.158\",8000\r\n"); wifiModuleSendAT(cmd,0,1000); memset(cmd,0,50); このコードを使用して、サーバに正常に接続できているのですが、このコードを利用して、コネクションが成功しているのかどうかを判定するため返答の”OK”を受信して使用したいと考えています。 そのため関数の返り値を追加して”OK”を受信したらTRUEを返し、受信できなかったら”FALSE”を返すようにしたのですが、これができない状態です。 u8 wifiModuleSendAT( const u8 * cmd,u16 len,int timeOutTime) { int i; u8 err; u8 * pC; int checkLen; memset(g_wire_rx_buf,0,MAX_WIRELESS_BUF); if(len==0) { for(i = 0 ; i < strlen(cmd) ; i++) wireless_put_for_Wifi_data(cmd[i]); } else { for(i = 0 ; i < len ; i++) wireless_put_for_Wifi_data(cmd[i]);    } OSSemPend(WifiRxData, timeOutTime, &err); memset(g_wire_cmd,0,sizeof(g_wire_cmd)); if(err != 0) { memset(g_wire_rx_buf,0,MAX_WIRELESS_BUF); return false; //continue; } { pC = strtok(g_wire_rx_buf," "); i=0; while(pC != NULL) { strcpy(&g_wire_cmd[i][0],pC); pC = strtok(NULL," "); i++; } //memset(g_wire_rx_buf,0,MAX_WIRELESS_BUF); } if(err == 0) { if(strstr(cmd,"AT+CIPSTART") != NULL) { for(i=0;i<5;i++) { if(strstr(g_wire_cmd[i],"OK") != NULL) { return true; } } } return false; } ”if(strstr(cmd,"AT+CIPSTART") != NULL)”こちらのコードの次のコードでブレイクポイントを作っておいて、”AT+CIPSTART”コマンド実行時に”OK”の返答を取得できるようにしているのですが、ブレイク発生時に”g_wire_rx_buf”やg_wire_rx_bufをコマンド毎に分割するように配列したg_wire_cmd[i][0]の中身を確認しても”OK”というアスキーコードが全く入っておらず”true”が返らない状態になってしまっていることを確認しました(※ AT+CIPSTART=\"TCP\",\"192.168.1.158\",8000\” のアスキーコードや”0”しか格納されていない時があります。) 受信割り込み時はg_wire_rx_bufの配列にデータを入れるようにしています。 u8 ddddd; __interrupt(vect=89) void INT_RXI0_SCI0(void) { OSIntEnter(); SCI0.SSR.BIT.RDRF = 0; ddddd = SCI0.RDR; g_wire_rx_buf[g_wire_front++] = ddddd; if(g_wire_front > (MAX_WIRELESS_BUF-1)) g_wire_front =0; if(ddddd==0x0d) { g_wire_length = g_wire_front; g_wire_rx_buf[g_wire_front] = 0; g_wire_front = 0; OSSemPost(WifiRxData); } OSIntExit(); } プログラムでuCOSというOSプログラムを動作させています。”if(ddddd==0x0d) ”でdddddに改行文字があったらその時点で OSSemPost(WifiRxData); でWifiRxDataコードでペンディングしている他のタスクコードをポストしています。 なぜ、サーバへの接続は現在問題ないのですが、”OK”という返答をg_wire_rx_bufの配列に収納できないのかや、もっと効率のよいプログラムのやり方などありましたら、ぜひご教示頂きますよう、よろしくお願い致します。

  • TCP/IPだけが通らないのですが、、、

    IBM ThinkPad 240Z を使用しています。 元々PCの付属のイーサネットポートで社内LANに接続していたのですが、 あるときからインターネットに接続することができなくなりました。 但し、Microsoftネットワーク、Netwareネットワークは共に接続ができます。 Pingコマンドでサーバーに打つと返ってこず、自分のIPに打つと返ってきます。 勿論、IPアドレス、サブネット、ゲートウェイ、DNS等の設定は問題ありません。 恐らく、TCP/IPが正常に動作していないようなのですが、コンパネのネットワーク から、TCP/IPを一旦削除し再度インストールしてもダメです。 どうしてなのでしょうか?何を調べたらいいのでしょうか? どなたか至急に教えて下さい。大変困ってます。 

  • WINSOCKでTCPのステータスを調べたい

    通信異常が発生するのでwiresharkでパケットモニタするとRetransmissionが発生していました。 そのデータには肯定応答コマンドとモニタコマンドが重複して送信されていました。単純に考えるとRetransmissionのパケットデータはそのままKEEPされてモニタコマンドのパケットとは区別されるような気がするんですが・・・。 そこでTCPが再送状態にあるならば上位からは新たなコマンドを出さないように修正したいと考えていますがいろいろ調べてもステータス取得出来るような物が見つかりません。 ご教授願います。

  • wifi で SQL Server に接続できない

    VBでSQL Server に接続しデータを参照・更新するアプリを作りました。 有線接続の場合問題なく参照・更新はできます。 今回のタイトル通りですが、wifi接続になると、サーバーに接続できなくて困っております。 この場合、何が原因だと思われるでしょうか? wifi端末はイーモバイルのD25HWです。 今回接続できなかった時にでたエラー内容です。 > SQL Server への接続を確立しているときにネットワーク関連または > インスタンス固有のエラーが発生しました。サーバーが見つからないか > アクセスできません。インスタンス名が正しいこと、および SQL Server が > リモート接続を許可するように構成されていることを確認してください。 > (provider: TCP プロパイダ, erorr: 0 - 接続済の呼び出し先が > 一定の時間を過ぎても正しく応答しなかったため、接続できませんでした。 > または接続済みのホストが応答しなかったため、確立された接続は失敗しました。) よろしくお願いします。

  • Winsockでの送信(TCP)

    Winsockでの送受信プログラムを作成しています。 システム構成としてはサーバーが1つあって、それに複数のPC(クライアント)を接続します。 そしてチャットのようにやりとりを行うプログラムを作成しています。 しかし、チャットと違う点は、文字を、指定した相手(IPで指定)にのみ送信するということです。 自分で調べた結果UDPを用いれば簡単だということを知りました。(sendtoで送信先IPが指定できるから) しかし、TCPのほうが信頼性が高いということでTCPでやりたいと思いました。(勉強にもなるので) どなたかやり方をご教授お願いいたします。

  • 「サーバーの応答が無効です」  iBook OS9

    OS9の古いiBookを復活させようとしています。 IPアドレスほかの割り振りまでOK。 smtpサーバーに「送信メールサーバーのアドレス(smtp.oct-net.ne.jp)」を入力しても 『セキュリティエラーです。サーバーの応答が無効です。』と エラーが出てインターネットに接続できません。 (TCP/IPのバージョンは、2.7.4です) 何か初歩的なミスをしているのでしょうか? どなたか教えていただけたら幸いです。 ※OKWAVEより補足:「J:COMのサービス」についての質問です。

  • TCP ロスがひどい時の対応

    Win32 C++ でTCP通信をさせています。 パケロスがひどい場合、connectに時間が掛かったり、 接続後send,recv待ちで切断エラーになることが多いようなのですが、 リトライをするにも切断エラーなどを判断するまでに10秒ほどかかったりするのを早く判断して、 sendし直し、またはconnectし直すにはどのように実装すれば可能でしょうか? よろしく御願いします。

  • TCP/IPを使用したサーバークライアントに関して

    TCP/IPを使用したサーバー、クライアントの考え方に関して、教えてほしいのですが? 今、TCP/IPを使用して、PCから装置のLEDをON/OFFしたり、 装置からはADのデータをPCに送る場合。 PCをクライアント、装置をサーバとした時、装置のIPアドレスとPC側のポート番号を 決めて、予め装置のファームウェアに焼き付けておけば、PCのアプリ側では、 装置側のIPが分かっているので、装置からの接続要求を受付けできますが、 逆にPCをサーバ、装置をクライアントとした時、装置側では、PCのIPアドレス(DHCPに より自動的に割り当てられる場合)が分からなければ、 1.装置側では、PCへの接続が出来ないと思うのですが、如何でしょう、 他に手だてがありますか? 2. この様な場合、PCをクライアント、装置をサーバとして、組むのが一般的なのでしょうか? 条件としては、装置側にPCのIPアドレスは入力できないものとし、また、PCのIPアドレスはDHCPで自動的に割り当てられるものとする。 詳しい方、ご教授お願いします。

専門家に質問してみよう