問題タブ [tcpserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - socket.error:[Errno111]接続が拒否されました
プロトタイプを準備しようとしていますが、接続に問題があります。クライアントとサーバーの両方にOpenSSLを使用しています。
そしてクライアント:
最後に、エラー:
どんな助けでもいただければ幸いです。単純なものが欠けているような気がしますが、ネットワークプログラミングは初めてです。
netstat -tpn
サーバーの実行中の出力:
java - matlabを再起動せずに、デバッグ停止後にぶら下がっているServerSocketをクリアする方法は?
matlab の Java ソケットを使用して、以下のようなコードがいくつかあります。ただし、ソリューションがmatlab固有である必要はないと思います...
問題: ソケットが server_socket.close によって閉じられる前に debug-quit を押すと、ソケットがぶら下がっている/開いたままになります。うまくいくと思われる唯一の回避策は、matlab を停止して再起動することです。これにより、バックグラウンド ソケットが強制終了されると思います。この関数によって ServerSocket が開いたままになっている場合、どうすればより一般的に ServerSocket を閉じることができますか?
これについてグーグルで調べてみましたが、使用するキーワードがよくわかりません.Javaソケットに関しては情報が過負荷です...
編集: 1 つの解決策は、これを関数ではなくスクリプトにすることです (つまり、最初の行と最後の 'end' を削除します)。そうすれば、debug kill 後も server_socket が持続します。しかし、ソケットが処理される場所をよりよく理解したいと思っており、他のすべての変数が必ずしも永続化されることを望んでいません。
python - Python TPCServer rfile.read ブロック
ヘッダーとメッセージ本文とともに、要求をキャプチャする単純なSocketServer.TCPServer
要求ハンドラー ( ) を作成しています。StreamRequestHandler
これは、テストに使用できる HTTP サーバーを偽造するためのものです。
リクエスト行またはヘッダーを取得するのに問題はありません。
存在する以上のものを取得しようとrfile
すると、コードがブロックされます。サイズを知らずにすべてのリクエストボディを取得するにはどうすればよいですか? つまり、Content-Size
ヘッダーがありません。
ここに私が今持っているもののスニペットがあります:
python - Python JSON-RPC_2.0 TCP サーバー クライアントの説明
JSON 文字列がサーバーに送信されるときの TCP サーバーとクライアントの関係の性質を完全に理解するのに苦労しています。必要な情報はそこにあるかもしれませんが、探している正しい検索パラメーターを使用していない可能性があります。
次の例から、Python TCP、JSON-RPC サーバーを構築しました。
- https://github.com/joshmarshall/jsonrpclib
- http://code.activestate.com/recipes/552751-json-rpc-server-and-client/
どちらの場合も、別のコンピューターの Python コンソールから Python サーバーと通信し、一方 (クライアント) から他方 (サーバー) にコマンドを送信できます。すべての例で、TCP 通信を容易にするために、クライアント マシンとサーバー マシンの両方に上記のライブラリをインストールする必要がありました。
私の状況と質問の背景は、いつ JSON がミックスに入るのですか? これは私がやりたいことです:
ネットワークの内部 (または外部) のリモート クライアントから JSON 文字列を受け入れる Python TCP サーバーをセットアップします。サーバーは JSON 文字列を解析し、オブジェクト化された文字列からメソッドとパラメーターを取得して、メソッドを実行します。次に、サーバーは JSON 文字列の結果を呼び出し元のクライアントに送信します。この場合、クライアントは、サーバーに要求を送信するために使用する JavaScript ライブラリを備えたモバイル アプリケーション (iPad、Android など) です。
なぜ Python クライアントが必要なのですか? 私が収集できることから、クライアントはサーバーへの接続を開き、JSON 文字列を送信するだけで済みますよね? すべてのコード サンプルに Python クライアントの例が含まれているのはなぜですか? 彼らは、サーバー マシンがサーバー マシンと通信することを想定しているので、サーバーに送信される JSON 文字列を生成するのに役立つクライアント コードを含めているのでしょうか?
Python クライアントが実際には必要ないと仮定すると、JSON 文字列を iPad から Python サーバーに送信していましたが、いずれの場合もサーバーは「Bad request syntax」エラーを報告しています。現在の質問を正しく理解していれば、その問題について新しい質問を書きます。
洞察力は高く評価されます。
python - PythonTCPサーバーのJSON不正なリクエストの構文
Python-2.7で作成したTCPJSON-RPCサーバーに奇妙な問題があります。次のコードを使用してサーバーを構築しました。
同じローカルネットワーク内からサーバーにクライアントを通信しています。コンソールウィンドウで、Python内からサーバーに接続し、サーバーに対してコマンドを実行できます。すべてが順調です。
ただし、モバイルアプリ(この場合はiPad)からJSON文字列を送信しようとすると、サーバーでエラーが発生します。また、JSON文字列を送信するためにこのツールをダウンロードしました:http ://www.simplecomtools.com/productcart/pc/downloads/tcptesttool.zipが、同じエラー結果になります。サーバーは「不正な要求構文」エラーを報告しています。私はいくつかの異なる文字列を試しました-表示されるエラーは次のとおりです:
192.168.1.107 --- [2012年10月13日09:48:17]コード400、メッセージ不正なリクエスト構文( "{'jsonrpc': '2.0'、'method':'add'、'params':[3、 6]、'id': '8'} ")192.168.1.107 --- [13 / Oct / 2012 09:48:17]" {'jsonrpc': '2.0'、'method':'add'、'params ':[3,6]、' id':' 8'} "400-
192.168.1.107 --- [2012年10月13日09:49:44]コード400、メッセージ不正なリクエスト構文('{"jsonrpc": "2.0"、 "method": "add"、 "params":[3、 6]、 "id": "8"}')192.168.1.107 --- [13 / Oct / 2012 09:49:44] "{" jsonrpc ":" 2.0 "、" method ":" add "、" params ":[3,6]、" id ":" 8 "}"400-
192.168.1.107 --- [2012年10月13日09:50:49]コード400、メッセージ不正なリクエスト構文('{"jsonrpc": "2.0"、 "method": "add"、 "params":{"x ":3、" y ":6}、" id ":" 8 "}')192.168.1.107 --- [2012年10月13日09:50:49]"{"jsonrpc": "2.0"、"メソッド":" add "、" params ":{" x ":3、" y ":6}、" id ":" 8 "}" 400-
192.168.1.107 --- [2012年10月13日17:11:59]コード400、メッセージ不正なリクエスト構文( "{'jsonrpc': '2.0'、'method':'add'、'params':{'x ':3、' y':6}、' id':8} ")192.168.1.107 --- [13 / Oct / 2012 17:11:59]" {'jsonrpc':' 2.0'、' method': 'add'、'params':{'x':3、'y':6}、'id':8} "400-
サーバーがリクエストの構文が悪いと考える理由が本当にわかりません。質問をすることさえ少しばかげていると感じます。構文エラーを解決するために何を試みることができるかについてのアイデアはありますか?
c# - TCPClientでStreamReader.ReadLine()を使用してTCPServerバッファーからメッセージ(データ)を読み取る(ReadLine()は切断されるまで返されません)
メソッドに問題がありますStreamReader.ReadLine()
。C#プログラムを作成しましたが、TCPクライアント側のみです。Herculesプログラムを使用してTCPServerを作成しています。ポート番号を入力して接続しました。次に、プログラムを実行し、[接続]ボタンをクリックしました。その後、TCPServerと接続しました。
TCPClientからHercules(TCPServer)にデータを送信することに問題はありません。写真のように、「Entered to Send」EditTextに文字列を入力し、ボタンをクリックして文字列を送信しました(受信データ部分Send
からの送信データを確認できます)。
ここまでは問題ありません。一部送信後、hercules(TCPServer)からTCPClientにデータを送信できません。データを送信するために、送信部分にデータを書き込ん でSend
ボタンをクリックしました。その後、次のデータを表示するには、Show
ボタンをクリックする必要があります.....問題はここにあります。ReadStreamバッファからデータを読み取ることができません。プログラムをデバッグしたところ、次のような問題のある部分が見つかりました。
パーツの内側にtry
線があります。
問題があります。ReadLine()がバッファからデータを読み取っていません。ここに興味深い部分があります。データを送信してShow
ボタンをクリックするとプログラムがフリーズしますが、ボタンをクリックして接続を閉じると、hercules.png
データを取得してReceived: EditTextに入れます。Close
read_stream.ReadLine();
- TCPServerから切断した後、なぜデータを取得するのですか?
\r\n
キャラクターが問題なのかもしれませんか?- 次のキャラクターを待っていると思いました。だから、私が切断したとき、それは3つがもはやキャラクターではないことを認識しているので機能します。私の質問はそれです:
read_stream.ReadLine();を使用するにはどうすればよいですか。切断せずにデータを送信するには?
これが私のmain.csです。追加するのを忘れました。あなたはそれを書いて私のプロジェクトを試すことができます...注:これは移植可能なヘラクレスへのリンクです、あなたはそれを簡単に実行することができます[ http://www.hw-group.com/products/hercules/index_en.html] 3
c# - MSDN マガジンからの TCP 非同期サーバーに関する質問
このMSDN マガジン 2005 年 8 月の記事で、Daryn Kiely が TCP サーバーを構築する 3 つの方法を説明しています。
3 番目のモデルである非同期モデルは、私のニーズに最も適したモデルですが、その内部動作の詳細を理解するのに苦労しています。
質問 1 - 接続を受け入れるスレッドの数について
この例では、 を呼び出してサーバーを起動するとStart()
、コードは接続を受け入れる 10 個の ThreadPools を作成します。
_serverSocket.BeginAccept
1 つだけを使用できない理由と、10 という数字を使用する理由がわかりませんでした。
質問 2 – 約 0 バイトの受信
ではReceiveCallback()
、0 バイトを受信すると、接続を閉じます。なんで?0 バイトを受信した場合、常にクライアントが接続を閉じたと見なされますか? ここで行ったテストでは、クライアントが接続を閉じると、SocketException でキャッチされる例外が発生します。ここで何か不足していますか?
質問 3 – BeginReceive を再度行う必要性について
何かがソケットで受信された後、BeginReceive に戻されます。なぜ受信を再開する必要があるのですか? これは自動的にすべきではありませんか?
質問 4 – バッファ サイズについて
255 バイトのバッファが使用されます。メッセージの長さがバッファ サイズよりも大きい場合、複数の受信で断片化されることを理解しています。メッセージが断片化されないことを保証するのに十分な大きさのバッファ サイズを設定する必要がありますか、それともメッセージの断片化を処理するコードを提供する必要がありますか (複数の受信を 1 つのバッファに結合するため)。
ruby - read、readpartial、および read_nonblock を使用して ruby で TCPServer ソケットから読み取る方法
ソケットからの読み取りと、Unicorn や Mongrel などの Ruby サーバーでの読み取りに関する 2 つの質問があります。
- ソケットから読み取ることはファイルを読み取ることとは異なり、送信される明確な EOF メッセージはなく、データは無限のストリームであることを学びました。では、読むのをやめるタイミングはどうすればわかりますか? たとえば、この場合の私のTCPServerは
http://localhost:9799
、ブラウザからアクセスしてサーバーにアクセスすると、読み取るデータがなくなった後にハングし、EOFErrorもスローされません。
Ruby サーバーで使用されるベスト プラクティス/標準的なアプローチを知りたいです。Unicorn はkgioライブラリの read_nonblock を使用し、mongrel は readpartial を使用していることがわかります (これらについてはよくわかりませんが、コードを調べてみると、これが採用されたアプローチであると私は感じています)。入力が完了しました。これがどのように行われるべきかを説明できます(そして、それはアプローチではないと思いますgets
-その、、、read
)。readpartial
read_nonblock
2)。ユニコーンやパッセンジャーなどのサーバーでこれがどのように達成されるかについて、数行教えていただければ幸いです。
ありがとうございました。
android - Androidエミュレーターをサーバーとして実行する
AndroidエミュレーターからATコマンドを受け取り、Cで書かれたTCPクライアントプログラムから応答を返したい.
コマンド「」を指定して、サーバーとしてubuntu-10.4システムでAndroid ICSエミュレーターを実行していますemulator -shell-serial tcp::4444,server
。別の端末で、Cで記述されたTCPクライアントを実行して、同じポートに接続しようとしています。
エミュレーターの GUI が起動するのを確認できますが、クライアントで AT コマンドを受信していません。