問題タブ [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.

0 投票する
5 に答える
950 参照

c - クライアントからサーバーにパスを渡す方法は?

こんにちは、これらが必要な TCP クライアント/サーバーを作成しようとしています。クライアントは、ファイルのファイル名またはファイル名のパスを提供します。サーバーはそのファイルを見つけて、権限、サイズ、所有者、所有者のグループ、変更/作成日、単語数、ユーザーの ID と優先度などの詳細を提供し、何か問題が発生した場合はこれらを -1 のクライアントに送信します。クライアントその詳細を印刷します。私はこのことをたくさんしましたが、大きな問題があるので続行できません.私の問題は、サーバーがファイルのパスを認識できないことですが、ファイルに名前を付けて通信しようとしました.違う?前もって感謝します


迅速な返信ありがとうございます。具体的には、教授は私が作成したこのtxtファイルを作成するように依頼しませんでしたが、解決策を見つけることができず、すべてをバッファに書き込むことができなかったために作成しました。 :

バッファクライアントからのパスが付属していますバッファからパスファイルを見つけます(ここで問題があります)ls -alバッファに書き込みます(.txtに書きました)wcバッファに書き込みます(.txtに書きました)パス書き込み先バッファ (まだ行っていません) ユーザー情報 バッファに書き込みます (まだ行っていません) バッファ クライアントに送信 クライアントはこれらすべての情報を含むバッファを出力します

私は sprintf を試しましたが、あなたがそれをどのように使用するか正確には理解できませんでした.

0 投票する
2 に答える
341 参照

c - 親が子を殺すように合図されたときに、リーパー関数に追加のパラメーターを詰め込む方法(c)?

私はチャットルームのように機能するTCPサーバーを作成していて、この質問に出くわしました。

ユーザーが接続すると、ユーザーにサービスを提供するための子プロセスが作成されます。
ユーザーがログインすると、ユーザー名をテキストファイルに保存しますがonline.txt
、ユーザーがログアウトすると、online.txt(問題)からユーザーを削除する必要があります。次にsignals、親が子reaper()を殺します。

私の質問は次のとおりです。

Q1:リーパーに追加情報(ユーザーがログインに使用したユーザー名など)を絞り込んで、ユーザーをリーパーから削除する方法を教えてonline.txtください。それとも、そうするための別のより良い方法がありますか?

sigQ2: inはどこreaper()からその価値を得るのですか?刈り取り機にパラメータを追加できますか?

Q3:子のpidをlogin.txtのある種の主キーとして使用できますか?もしそうなら、どうすればreaper()親によって呼び出されるの間に子供のpidを取得できますか?

刈り取り機は次のようになります。

親が使用するシグナルは次のようになります。

よろしくお願いします。一度に3つの質問をするのはあまり貪欲ではないことを願っています。
質問のいずれかに関する洞察は大歓迎です。

0 投票する
2 に答える
261 参照

c - リーパーコール後のサーバージャム

私はTCPサーバーで作業していましたが、非常に奇妙なことが起こりました。

1つのクライアントに接続すると、すべてがうまくいきます。
2つ以上のクライアントが接続する場合でも、トラフィックは正常です。
ただし、いずれかのクライアントが切断されると、リーパー呼び出しの直後にサーバーがジャムします。それはただそこに座って待っています。

2つのうち1つのクライアントを切断し、再接続しようとしたときに、これを発見しました。再接続しているクライアントはエラーメッセージをまったく表示せず、スムーズに実行されます。パッケージはサーバーに送信できますが、サーバー内に蓄積されます。

一方、サーバーはそこでハングし、特定の1つのクライアントが切断されるのを待ちます。そのクライアントが切断されると、サーバーは機能を再開し、サーバー内に蓄積されたすべての要求を実行します。

以下は、サーバー構造に使用したベアボーンコードです。
このコードは、上記の問題も示しています。
誰かお願いします、エラーが発生した場所を指摘してください。

どんなヘッズアップでも大歓迎です。
よろしくお願いします。

0 投票する
3 に答える
3948 参照

ruby - 「接続がリセットされました」エラーを防ぐ方法は?

私はRubyに非常に基本的なTCPサーバーを実装しています。通常は想定どおりの動作をしますが、「ページの読み込み中にサーバーへの接続がリセットされました」というエラーが表示されることがあります。close接続をすぐに終了することと関係があるように感じます。もしそうなら、どのように私はすべてのデータが送信されるのを待つのですか?それとも何か他のものですか?

0 投票する
1 に答える
223 参照

java - 非ブロッキングサーバーとブロックされたI/Oクライアントが通信することは可能ですか?

ただ疑問に思っていたのですが、相互に通信する2つのソケットがあり、1つはブロックされたI / Oを使用し、もう1つはブロックされていないI / Oを使用していますか?

0 投票する
1 に答える
907 参照

c++ - QtTcpServerアーキテクチャ

問題は、Qtを備えたサーバーのアーキテクチャーについてです。たとえばReadyRead()、ソケットが信号を送るときに呼び出されるスロットがreadyRead() あります。いくつかの種類の要求がある場合は、次のことができます。

これを行う他の方法があるのだろうか。これは拡張可能で快適ではないと思います。

サーバーをJava、C、Perlなどで記述されたクライアントで動作させたい場合は、QByteArrayのみを使用する必要があります。QtDemoクライアントからのすべてのサンプルで、メッセージの前にメッセージのサイズを送信します。必要ですか?

Qtで作成されたサーバー(github、bitbucketなど)のサンプルを提案していただければ幸いです。本番サーバーがどのように配置されているかを確認したいと思います。

0 投票する
2 に答える
2036 参照

c# - C#Webアプリ経由でtcpパケットを送受信

こんにちは私たちはユニークなプロジェクトを書いています。私はTCPプログラミングに慣れていないので、誰かが私たちを正しい方向に向けることができるかどうか疑問に思っていました.

外部システムと対話します。TCP パケットを送信し、TCP 応答を受信します。これは、Web アプリケーションのページから動作する必要があり、x ミリ秒ごとに継続的にポーリングします。

提案されたメッセージの長さは 8 バイトで、メッセージの開始または終了に関する情報は送信されません。メッセージ構造: | バイト 0 | バイト 1 | バイト 2 | バイト 3 | バイト 4 | バイト 5 | バイト 6 | バイト 7 |

メッセージ区切り文字は次のとおりです。バイト 0 | = 0x02 (stx) および | バイト 7 | = 0x03 (エトックス)

私の送信メッセージ: | stx | 's' | 'b' | '0' | '0' | '0' |'0' |etx |

私の受信メッセージ: | stx | 'S' | 'B' | '0' | '1' | '0' | '0' | etx |

質問:

tcpCLient/Listener クラスと Sockets クラスのどちらを使用する必要がありますか?

これらのパケットを x ミリ秒ごとに継続的にポーリングして送受信するように Web ページを取得する最良の方法は何ですか?

0 投票する
3 に答える
6987 参照

python - シャットダウンした直後にコード内で ThreadingMixIn を使用して TCPServer を再起動します。(`Address already in use` を与える)

Python でスレッド (ThreadingMixIn) を使用して TCPServer をプログラムしようとしています。socket.error: [Errno 48] Address already in use問題は、もう一度実行しようとするとエラーが発生するため、適切にシャットダウンできないことです。これは、問題を引き起こす python コードの最小限の例です。

メイン コードで行う必要があるのは、サーバーを起動し、シャットダウンして、再度実行することだけです。ただし、最初のシャットダウン後にソケットが解放されていないため、上記のエラーが発生します。

self.allow_reuse_address = True設定すれば解決できると思ったのですが、うまくいきませんでした。Python プログラムが終了したら、すぐにもう一度実行して、サーバーを 1 回 (ただし、2 回ではなく) 起動できます。
ただし、他のサーバーがそのアドレスでリッスンしていないため、ポートをランダム化すると (たとえば、に置き換えると) 1234、問題はなくなります。1234+i

同様の SO Q Shutting down gracefully from ThreadingTCPServerがありますが、解決策があります (自分のコードでは機能せず、ThreadingTCPServer を使用しallow_reuse_addressTrueいません)。

コードでサーバーを 2 回起動できるようにするには、コードをどのように変更する必要がありますか?

Some more information: The reason why I'm doing this is that I want to run some unit tests for my python project. This requires to provide a (fake) server that my software should to connect to.

edit:
I just found the most correct answer to my problem: I have to add fake_server.server_close() at the end of my main execution code (right after fake_server.shutdown()). I found it in the source file of the TCPServer implementation. All it does is self.socket.close().

0 投票する
3 に答える
1000 参照

c++ - Linux上にc++tcpサーバーはありますか?

c ++でブロッキングなしのtcpサーバーを1つ開発したいのですが、Twistedのようなオープンソースプロジェクトはありますか?

0 投票する
1 に答える
1752 参照

ruby - Ruby tcpserver クライアント サーバー

ログ情報を tcpsocket 経由でサーバーに送信し、監視クライアントをサーバーに接続してログ データを表示するようにコーディングしているアプリケーションがあります。これまでのところ、情報がサーバーに送信される段階に到達できましたが、次の段階に進む方法についていくつか考える必要があります. Ruby tcpseverを使用して、サーバーが受信データをクライアントに再送信するためにどのような方法を使用できますか? スレッド間でデータを保存するにはどうすればよいですか?