問題タブ [recv]

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 投票する
2 に答える
1356 参照

sockets - ソケットプログラミング:recv()とread()の動作が同じでないのはなぜですか?

select()stdinからデータを受信するために使用します。

コードはここにあります:

このコードでは、recv()は常にを返します-1read()、正しいデータを取得できます。

これは、パラメータが。のread()場合と同等であることがわかります。それでは、なぜ私のコードの動作は同じではないのですか?recv()flags0recv()read()

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

linux - ソケットにデータが残っているかどうかを判断し、破棄します

TCP ソケットからデータを取得する Linux でインターフェイスを作成しています。ユーザーは、受信したデータが格納されるバッファを提供します。提供されたバッファが小さすぎる場合は、エラーを返したいだけです。最初の問題は、バッファが小さすぎたかどうかを判断することです。recv() 関数は、実際にバッファに書き込まれたバイト数を返すだけです。recv() マンページに記載されている MSG_TRUNC フラグを使用しても、同じ結果が返されます。2 番目の問題は、ソケットにまだキューに入れられているデータを破棄することです。したがって、提供された Buffer が小さすぎると判断した場合は、ソケットに残っているものをすべて消去したいだけです。ソケットを閉じて再度開くか、何もなくなるまで受信する以外に、他の方法はありますか? よろしくお願いします

トビー

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

python - Is there a way to know how much data is available in a Python socket to receive?

I have figured out that I must use ioctl. There are similar questions here:

My questions are:

  1. What is an equivalent to FIONREAD in Python? How do I call sock.ioctl() to obtain the amount of bytes available?
  2. What if I am using Python 2.5 on Windows? socket.ioctl is new in version 2.6.
0 投票する
2 に答える
1148 参照

c - Cの単純なTCPクライアントサーブモデル:クライアントが受信しない

cで単純なTCPクライアントサーバーを作成し、クライアントからサーバーにメッセージを送信しようとしていますが、いくつか問題があります。サーバーはメッセージを送信しますが(整数値> 0)、クライアントはメッセージを受信できません(整数値> 0)。コードは次のとおりです。クライアント

サーバ:

私が取得する出力(最初にサーバーを起動し、次にクライアントを起動した後)は、サーバー側:9クライアント側:-1 hello

Ubuntu11.04とgccコンパイラを使用しています。

誰かが助けてくれることを願っています。ありがとうございました

ウマル

0 投票する
4 に答える
3766 参照

c - CでソケットからTCPペイロードをすぐに(パケットごとに)受信します

C で開いているネットワーク ソケットからパケット単位でデータ (バイト ストリーム) を受信するにはどうすればよいですか? ソケットが到着したらすぐに(パケットがマシンに到着するとすぐに)ソケットからデータを読み取りたいと思います。

ソケットで read() (または recv()) 呼び出しを実行すると、10,000 バイト以上の TCP メッセージ全体を取得しているようです。むしろ、最初の TCP セグメント ペイロードを受信し、処理してから、次へと進みたいと考えています。

注 - 生のパケットは必要ありません。TCP セグメント データ ペイロードのみ。

また、注意してください-本質的に、TCPメッセージ全体がTCPレイヤーに蓄積されるのを待つのではなく、データが到着したらすぐに処理することにより、遅延を最小限に抑えたいと考えています。

どんなアイデアでも大歓迎です、ありがとう!

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

python - Python ブロッキング recv は、要求されたよりも少ないデータを返します

C のエコー サーバーと Python のテスト クライアントがあります。サーバーの読み取りバッファは制限されています (例: 16 バイト)。クライアントが 16 バイトを超える送信を行う場合、最初に 16 を読み取り、クライアントに書き戻してから再度読み取ります。

サーバーを でテストしたtelnetところ、16 バイトを超えていても、入力と同じ文字列が返されました。ただし、この Python クライアントは機能しません。

このクライアントは、サーバーが書き戻す最初の 16 バイトのみを受け取ります。サーバー ログには 2 回の書き込み (16 + 4) が表示されます。Pythonの出力は次のようになります

なぜこれが起こっているのかわかりません.ブロッキングrecv()が要求されたよりも少ないデータを返すのはなぜですか?

0 投票する
4 に答える
498 参照

c - CWindowsのバッファサイズ

Windowsでは、このrecv関数を使用してソケットからデータを受信して​​いるとしましょう。最適なバッファの大きさに興味がありますか?バイトにすることも、1024バイト以上にすることもでき51200ます。どちらがパフォーマンスに優れているのだろうかと思います。

recvこれは関数だけに当てはまるわけではありません。たとえば、大きなテキストファイルを読んでいる場合、非常に大きなバッファが必要ですか、それとも小さなバッファが必要ですか。

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

c++ - recv ループから抜け出すにはどうすればよいですか?

ネットワークデータを受信するためにループで関数を使用していrecvますが、ループの途中でデータの受信を停止したいとしましょう。ループを中断することはできますが、これはデータの受信を停止するための非常にクリーンな方法とは思えません。

それで、データの受信をきれいに停止する方法はありますか、それともループを壊すだけですか? HTTP GET/POST リクエストです。

ここで私が使用している単純化されたものです:

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

c - 'sendfile'で送信されたファイルをどのように受信しますか?

基本的なファイルサーバーを実装しようとしています。私はここにあるsendfileコマンドを使おうとしています:http://linux.die.net/man/2/sendfileTCPを使用しています。

正常に送信することはできますが、バイナリで送信するため、ハングアップするかどうかはわかりません。

recvでファイルを受信しようとしていますが、正しく送信されません。バイナリファイルを受け取り、それを文字列に入れる特別な方法はありますか?

編集:いくつかのコードを提供するように求められました、ここにあります:

SENDFILE呼び出し(サーバープロセスから)

RECIEVE呼び出し(クライアントプロセスから、ループよりもさらに基本的で、1文字だけが必要です)

編集:戻り値をチェックするためのコードを書きました。sendfileはerrno9を与えています-不正なファイル番号。これは、呼び出しの2番目のファイル記述子(送信するファイルの記述子)にあると想定しています。sendfileがintではないと文句を言っていたので、intとしてキャストしました。

上記のsendfile呼び出しで使用したファイルポインタコードを指定して、send fileをどのように使用する必要がありますか?

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

http - Berkeley Sockets で不明なサイズの recv() データ

リモート ホストからデータを受信するために Berkeley Sockets の recv() を使用する C++ のコードがあります。問題は、データのサイズ (可変) がわからないため、これを機能させるには何らかのタイムアウト オプション (おそらく) が必要です。

私はソケットプログラミングが初めてなので、たとえばWebクライアントがサーバーからの応答をどのように処理するのか疑問に思っていました(たとえば、サーバーはhtmlデータをクライアントに送信します)。ページの大きさがわからないので、ある種のタイムアウトを使用しますか? FTP クライアントと同じです。