問題タブ [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.
python - python socket.recv/sendall 呼び出しのブロック
新しいタグを作成できないため、この投稿は誤って「送信」とタグ付けされています。
この単純なエコー サーバーについて非常に基本的な質問があります。いくつかのコード スニペットを次に示します。
クライアント
サーバ
これで問題なく動作しますが、クライアントが空の文字列を送信する場合 ("enter data: " に応答してリターン キーを押す) を除きます。この場合、デッドロックのような動作が見られます。
では、ユーザーがクライアント側で return キーを押すと、正確には何が起こるのでしょうか? いくつかのデータが送信バッファーに追加されるのを待っている sendall 呼び出しがブロックされ、recv 呼び出しがブロックされることしか想像できません。何が起きてる?
読んでくれてありがとう!
sockets - ソケット通信におけるsend()およびrecv()の動作
セットアップは次のとおりです。
これが私の質問です:
1。クライアントは、閉じる前に実際にmsg1を受信しますが、なぜこのようになっているのですか?
2.msg2を送信すると正常に戻ります。msg1を受信した後にクライアントが閉じるのに、なぜmsg2の送信が成功するのですか?
PS私はTCP用のストリームソケットを使用しています。
iphone - while(1) recv スレッドをブロックする
このコードに問題があります。ご覧のとおり、内部スレッド recv を使用した起動により、プログラムは特定の保留中ブロックされますが、実行は継続され、タスクはスレッドをロックしたままになります。私のプログラムは引き続き recv データ ソケット new_sd を受信するため、無限ループ (コメント化されたコード) に入りました。問題は、recv の前に while (1) my program block を入力すると、正しく挿入されずに文字列が受信され、その後停止することです。私の recv が常に情報を待つようにするのを手伝ってくれる人はいますか? よろしくお願いします。
-(IBAction)チャット{
-(void)riceviDatiServer{
c - Cソケットプログラミング:recv()を呼び出すと、ソケットファイル記述子が変更されますか?
ねえ、私はrecv()でこの奇妙な問題を抱えています。私はクライアント/サーバーをプログラミングしており、クライアントはメッセージ(正確には構造)をsend()し、サーバーはそれをrecv()します。また、複数のソケットとselect()を使用しています。
私が抱えている問題は、ではread_set
、0〜3が設定されておらず、4が設定されていることです。それは結構です。しかし、電話recv()
をかけると、i
突然0になります。それはなぜですか。recv()
なぜソケットファイル記述子番号を取得して別の番号に変更するのか、私には意味がありません。それは正常ですか?私は何かが足りないのですか?
それが印刷されます。
c - recv()で使用されるバッファのrealloc()メモリ
ソケットからデータをrecv()してバッファーに格納する必要がありますが、ループ内にあるように、すべてのデータを確実に取得する必要があります。したがって、バッファのスペースが不足しないようにするために、reallocを使用してバッファに割り当てられたメモリのサイズを変更しようとしています。これまでのところ:
ただし、Valgrindが「valgrind:「不可能」が発生しました:」と不平を言っているため、これは正しく機能していないようです。これを適切に行う方法について何かアドバイスはありますか?
ありがとう、Hristo
更新...reallocを誤って使用していることに気付きました。改訂版は次のとおりです。
ただし、valgrindはまだ不平を言っています:
c++ - ソケットとマルチスレッド
私には興味深い(私にとって)問題があります... 2つのスレッドがあります。1つはstd入力からデータをキャプチャしてソケットを介してサーバーに送信するためのもので、もう1つはブロッキングソケットからデータを受信するためのものです。したがって、サーバーからの応答がない場合、recv()呼び出しは無期限に待機しますよね?ただし、呼び出し元のスレッドだけをブロックするのではなく、プロセス全体をブロックします。なぜこのことが起こるのですか?
c - recv は古いデータを返します
このループは、ソケットから行ごとにデータを取得し、それをバッファーに入れることになっています。何らかの理由で、返す新しいデータがない場合、recv は取得した最後の数行を返します。最初の recv をコメントアウトすることでバグを止めることができましたが、次の行の長さがわかりません。私はそれがではないことを知っています
python - 非表示の入力を持つpython socket.socket.recv
socket.socket.recv
非表示の入力で実行する方法はありますか。たとえば、パスワードを要求する場合、「sudo」bash コマンドを実行しているかのように、入力を非表示にする必要があります。
編集:
socket.socket.recv
リモート エンドでデータを要求します。サーバーに接続すると、テキストの入力を求められ、入力するとコンソールに表示されます。sudo コマンドを使用すると、パスワードが要求され、入力したテキストが表示されません。で機能するこのようなものが欲しいsocket.sock.recv
ので、入力したパスワードは表示されません。
編集2:
私が言ったとき、私はsocket.socket.recv
実際socket._socketobject.recv
に私のプログラムで次のようになるようなものを意味していました: client.recv(BUF_SIZE)
.
編集 3:
telnet サーバーを作成しています。client.recv(BUF_SIZE)
走っているようなraw_input
クライアント コンピューター上。getpass.getpass
では、クライアント コンピューターでの実行に似たものはありますか?
c - ソケット ライブラリで recv を呼び出す場合、recv バッファーの大きさはどのくらいにする必要がありますか?
C のソケット ライブラリについていくつか質問があります。質問で参照するコードのスニペットを次に示します。
- recv_buffer のサイズはどのように決定すればよいですか? 私は3000を使用していますが、それは任意です。
recv()
バッファより大きいパケットを受信すると どうなりますか?- recv を再度呼び出さずにメッセージ全体を受信したかどうかを確認し、受信するものが何もないときに永遠に待機させるにはどうすればよいですか?
- スペースが不足することを恐れずにバッファーに追加し続けることができるように、バッファーに一定量のスペースを持たないようにする方法はありますか? おそらく、最新の応答をバッファ
strcat
に連結するために使用していますか?recv()
たくさんの質問があることは承知していますが、回答をいただければ幸いです。
c - recvはchar[]を上書きします
私は、過去に行った他の多くのスクリプトと同じように、小さなクライアントサーバースクリプトを作成しようとしています。
しかし、これには問題があります。私がコードとそれが私に与える出力を投稿するならば、それはより良いです。
コード:
クライアント送信文字列:./ send -i 10.10.10.4 -f filename.ext
なので、スクリプトはサーバーで-i(IP)と-f(FILE)を送信します。
これが私の出力サーバー側です:
1 10.10.10.6
2 10.10.10.6
3
filename.ext@10.10.10.4 for
ご覧のとおり、printf(3)とprintf(ip、file、ip)は失敗します。
方法と場所はわかりませんが、誰かが私のhacker_ip文字列を上書きします。
ご協力いただきありがとうございます!:)