問題タブ [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.
c# - C# TCP サーバーからリッスン スレッド外の接続されたクライアントへのデータのサンディング
Unity で単純な Tcp サーバーを作成しており、Flash アプリケーションをそれに接続しています。スレッド化された Tcp サーバーに関する優れたチュートリアルをオンラインで見つけました。私のフラッシュ アプリはそれにうまく接続します。ただし、リスニング スレッドの外部にあるデータを接続されたクライアントに送信することはできません。スレッド内で取得した Tcpclient のグローバル参照を作成してみました。ただし、その参照 (sclient) はリスニング スレッド内でのみ機能し、スレッド外のコンソールに Null を出力します。後で使用するために TCP クライアント参照を保持したり、ブロック スレッドの外部からアクセスしたりするためにできることがあるはずです。助けてください!
html - html5websocket をテストするための tcp ソケット サーバー
html5websocket をテストするのに最適な tcp ソケット サーバーはどれですか? TCPとやり取りするhtml5socketベースのクライアントを開発しています。したがって、最初にテストサーバーが必要です。PHP は得意ですが、ソケット プログラミングは得意ではありません。そこで、Google コードからダウンロードした PHPwebsocket を使用しました。テスト用に独自のクライアントとサーバーを使用して試しましたが、突然切断され、意図したとおりに動作しません。HTML5 websocket クライアントをテストする他のソケット サーバーはありますか? どちらが優れているか、Python ベースまたは Java ベースの tcp サーバーを使用できます。PHP の場合は、より便利です。HTML5 websocket をテストするために他に何が必要か教えてください。私はソケットの初心者です。そのため、私のコンセプトはそれほど明確ではありません。
アドバイスをありがとう。
stream - ストリームの読み取りと書き込みに関する Indy 10 の問題
ネットワーク経由で送信する前にストリームに変換するコレクションを使用して、 IdTCPServer と IdTCPClient の間でデータを交換しようとしています。残念ながら、どのように試しても、クライアントとサーバーの間でストリームを渡すことができないようです。コードは常にIdTCPClient1.IOHandler.ReadStream(myStream, -1, True)行でハングします。
私のコードの関連部分を以下に示します。
クライアント側
サーバ側
この問題を解決するためのご支援をいただければ幸いです。
ありがとう、
Jダニエル
network-programming - TCP メッセージングのベスト コンベンション
私はこのメッセージ変換を使用しています: %total_msg_length%|%msg_body% を使用して、tcp ソケット (python/pyqt) を介して文字列データを受信します。これは良い対流ですか、それとも何か他のことを試す必要がありますか?
c - TCP コードで読み取り/書き込みが機能しない
基本的な TCP クライアント/サーバー プログラムがあります。
クライアントとサーバーの両方に、読み取りと書き込みを行うメソッドがあります。初めて実行したときは完全に機能しますが、再度実行すると(ループ中)、何も読み込まれません。
サーバーで
a2、a3、a4、a5、および a6 は文字列です。初めて実行すると、すべてが正しく印刷されます。2 回目は何も出力されず、空白行がたくさん出力されます。バッファが何であるかを調べるためにテストしたところ、「」であることがわかりました。問題が何であるか、またはどのように修正できるか知っていますか?
c - マルチスレッドサーバーの設計
より大きなプロジェクトの一部であるTCPサーバーを実装しようとしています。基本的に、サーバーは任意の数のクライアント(32以上)とのTCP接続を維持し、サービスを要求するすべてのクライアントにサービスを提供できる必要があります。私たちのシナリオでは、クライアントがサーバーに接続されると、何らかの障害が発生しない限り(たとえば、クライアントを実行しているマシンが故障した場合)、接続を閉じることはなく、サービスを繰り返し要求すると想定されます。サーバー。他のすべてのクライアントの場合も同じです。つまり、それぞれがサーバーとの接続を維持し、トランザクションを実行します。
今、私は上記の機能を使用して実装しましたselect()
berkelyソケットAPIのシステムコール。クライアントの数が少ない場合(たとえば10)は正常に機能します。ただし、16コアのマシンにサーバーを実装しているため、サーバーを可能な限り高いレベルにスケーリングする必要があります。そのために、私はさまざまなマルチスレッド設計手法(たとえば、クライアントごとに1つのスレッドなど)を調べました。私の意見では、スレッドプールの設計が最適です。実装しようとしたときに、いくつかの問題が発生しました。メインスレッドを指定して、任意の数の着信接続を受け入れ、各接続のファイル記述子をデータ構造に保存し、スレッドのプールがある場合、どのように取得しますか特定のクライアントがサービスを要求しているかどうかをポーリングするスレッド。設計は、クライアントがサーバーに接続し、サービスを取得した後に接続を閉じて、プールからスレッドを選択し、クライアントにサービスを提供してから、将来の接続処理のためにプールにプッシュするというシナリオでは十分に単純です。しかし、接続を維持し、サービスを断続的に要求する一連のクライアントにサービスを提供する必要がある場合、これを行うための最良のアプローチは何でしょうか。私は本当にこれで立ち往生しているので、すべての助けは大いに感謝されます。ありがとう。
c - recv()sys呼び出しを正しく使用する方法
LinuxでBerkelySOCKETAPIを使用してTCPサーバーを作成中です。これで、クライアントには一連の仕様があり、クライアントによって送信される各メッセージはそれらの仕様に基づいています。つまり、クライアントから送信されるメッセージは、仕様で指定された多くの構造体の1つに対応します。ここでのシナリオは、サーバーがクライアントがいつ送信するメッセージを認識していないというものです。メッセージを受け取ったら、それが何であるかを理解できますが、その前には理解できません。クライアントから送信されるメッセージの長さは可変であるため、どのメッセージを受け取るかを事前に知ることはできません。これを解決するために、私は次の方法を使用しました。
つまり、サイズ4096のデフォルトのバッファを使用します(クライアントからのメッセージがこのサイズより大きくなることはありません)。そのバッファで受信し、その後、メッセージタイプを確認して、次のように対応するアクションを実行します。
これは問題なく機能しますが、それが適切な方法であるか、これよりも優れている可能性がある他の方法があるかを確認したかっただけです。すべてが大いに感謝するのに役立ちます。
ありがとう。
c# - Web サービスが注文を受信したときにクライアントに通知を送信する tcp サーバーを作成するにはどうすればよいですか?
Web ページからの注文を処理して保存する Web サービスがあります。
そのWebサービスの静的変数として、この質問によれば、そのような注文が受信されたときに、接続されたクライアントに非常に小さなメッセージを送信することになっているサーバーがあります。
以下は私のサーバーのコードです。一度に接続できるクライアントは 1 つだけだと思いますが、これがコードのいくつかの奇妙な点を説明している可能性がありますが、誰かがこれをより適切に行う方法を知っている場合は、提案を聞きたいと思っています。
TCP サーバー:
ウェブサービス:
.net - サーバー側の RemoteEndPoint がクライアント IP を表さないのはなぜですか?
コンピューターでサーバーとクライアントを使用して非同期ソケットを試しました(1 サーバーと 2 クライアント):
サーバー側では、サーバーが最初のクライアントから最初の接続要求を受信すると、最初のクライアント ソケットを ArrayList に格納します。次のコードでは、クライアントの IP は 127.0.0.1 です。
サーバーが 2 番目のクライアントから 2 番目の接続要求を受信すると、クライアントの IP は 127.0.0.1 ですが、127.0.0.2 ではありません。
上記のコードを RemoteEndPoint から LocalEndPoint に変更すると、出力は正しくなります。サーバー側のRemoteEndPointがクライアント IPを表さないのはなぜですか?
から
に
ありがとう。
delphi - パッケージを頻繁に送信すると、Indy TCPServer が TCPClient からすべてのパッケージを受信しない
Indy TCP 接続に問題があります。Indy 10 で Turbo Delphi 2006 を使用しています。複数の TCP パッケージを idTCPClient から idTCPServer に送信したいと考えています。
パッケージを 1 つだけ送信する場合、または関数の 2 つの呼び出しの間に sleep(100) コマンドを挿入する場合は、問題なく動作します。しかし、この関数を頻繁に呼び出すと、サーバーの onExecute が毎回呼び出されるわけではありません。
送信するための私のコード:
この関数を数回 (1 秒間に 5 ~ 10 回) 呼び出して、サーバー アプリケーションでこれらすべてのパッケージを処理したいと考えています。
事前にご回答いただきありがとうございます。