問題タブ [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.
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文字列を上書きします。
ご協力いただきありがとうございます!:)
python - Python:recvでデータを待っている間にUDPソケットを閉じる方法は?
Pythonでこのコードを考えてみましょう:
UDP サーバーを起動および停止できる対話型シェルを実行します。サーバーは、エラーを検出してループを終了する必要がある try/except ブロック内にrecv / onPacketコールバックの無限ループがあるスレッドを起動するクラスを通じて実装されます。私が期待しているのは、シェルで「stop」と入力すると、ソケットが閉じられ、ファイル記述子の無効化のためにrecvfrom関数によって例外が発生することです。代わりに、recvfromは、 close呼び出しの後でも、データを待機しているスレッドをブロックしているようです。なぜこの奇妙な動作ですか?私は常にこのパターンを使用して、C++ と Java で UDP サーバーを実装してきましたが、常に機能していました。
recvfromからの代わりにselectからファイル記述子の中断のイベントを取得するために、ソケットを含むリストをxread引数に渡す「 select 」も試しましたが、selectも最後まで「無意味」に見えます.
Python 2.5 - 2.6 を使用して、Linux と Windows で同じ動作を維持する独自のコードが必要です。
ありがとう。
python - Python で別のスレッドから socket.recv() を中止するにはどうすればよいですか
接続を待機するメインスレッドがあります。クライアント (この場合は telnet) からの応答をエコーするクライアント スレッドを生成します。しかし、1 回の接続の後など、しばらくしてからすべてのソケットとすべてのスレッドを閉じたいとします。
どうすればいいですか?メインスレッドから実行すると、実行clientSocket.close()
が停止しませんrecv
。最初にtelnetを介して何かを送信した場合にのみ停止し、その後の送信と受信に失敗します。
私のコードは次のようになります。
tcp - ペイロードサイズが0の有効なTCPパケットを受信した場合、recv()はどのような値を返しますか
TCPソケットプログラミングでは、 recv()
0が返される場合、反対側が接続を閉じたことを示していると見なされます。ただし、AFAIK、TCP RFCは、TCPのペイロードを> 0にすることを義務付けていません。したがって、理論的には、TCPスタックはペイロード0のメッセージを受信できます。
したがって、基本的に私の質問は、recv()
サイズが0のペイロードのパケットを受信した場合に何が返されるかということです。0が返された場合、閉じた接続の表示とどのように区別しますか。
python - SimpleXmlRpcServer _sock.rcv が数千回のリクエスト後にフリーズする
WAN 経由で複数の XMLRPC クライアントからの要求を処理しています。このことは、たとえば、1 日 (場合によっては 2 日) の間うまく機能し、その後 socket.py でフリーズします。
_sock.timeout は -1、_sock.gettimeout は None
メイン スレッド (XMLRPC 呼び出しを受信するだけ) で特別なことを行うことはなく、DB と通信する別の 2 つのスレッドがあります。これらのスレッドは両方とも正常に動作し、このブロックを存続します (WinPdb で確認しました)。クライアントは 1KB を超えない長さのリクエストを送信しており、特別なコンテンツはありません。辞書にあるきれいな文字列だけです。2 回のブロックの間に、何万ものリクエストを問題なく処理しています。ファイアウォールがオフになっている、同じマシンに奇妙なソフトウェアがないなど...
Windows XP と Python 2.6.4 を使用しています。2.6.4 との違いを確認しました。および 2.6.5 であり、重要なことは何も見つかりませんでした (または、私が間違っているのでしょうか?)。2.7 バージョンは、MySqlDB のバイナリが見つからないため、オプションではありません。
インターネット接続が不十分なクライアントによって時々発生する唯一のことは、ソケットが壊れることです。これは 5 ~ 10 分ごとに発生しています (2 秒ごとにサーバーにアクセスするクライアントは 5 つだけです)。
私はこの問題にかなりの時間を費やしてきましたが、今、何をすべきかについての考えを失い始めています。ヒントや考えをいただければ幸いです。
perl - データ長が不明な場合、Perl でソケットからデータを受信する最良の方法は何ですか?
現在、文字に到達するまで、ループで一度に 1 文字ずつ読み取ります\0
。これを行うより良い方法はありますか?
sockets - 1つのソケットでrecv()とsend()を同時に実行しても安全ですか?
ソケットは2つの独立した半二重チャネルと見なすことができることをどこかで読んだことを覚えています。recv()
同じソケットのとsend()
が実際には無関係であることを意味しますか?
- もしそうなら、それは定義によるものですか、それとも実装固有のものですか?
- そうでない場合、2つは互いにどのように干渉しますか?
ありがとう。
c++ - Winsock を使用してすべての情報が読み取られたときに「recv()」ループを終了する
winsock の recv() ループで問題が発生しています。iResult==0 のときにループを終了しようとしていますが、ループはソケットが閉じたときにのみ終了します。iResult が 0 になる最後の recv() でハングしているようです。ループを効果的に終了する方法について何かアイデアはありますか? 私の最終的な目標 (iResult == 0 であるかどうかに関係なく、おそらくこれについて間違った方法で行っている可能性があります) は、送信されたすべての情報が読み取られたときにループを停止することです。これがループです。
私が言ったように、私はすべてのデータを受け取っていますが、ループを終了できません。次のステップは、データをサーバーに書き戻すことですが、ping タイムアウトまでここでハングします。ソケットは SOCK_STREAM で、BUFLEN は 0x200 として定義されています
ありがとう
html - ソケット経由で HTTP をダウンロード (C)
最近、インターネットからファイルをダウンロードし始めるために、このガイドを使い始めました。私はそれを読んで、Web サイトの HTTP 本文をダウンロードする次のコードを思いつきました。唯一の問題は、それが機能していないことです。recv() 呼び出しを呼び出すと、コードが停止します。クラッシュすることはありません。ただ走り続けます。これは私のせいですか?間違ったアプローチを使用していますか? コードを使用して、.html ファイルのコンテンツをダウンロードするだけでなく、他のファイル (zip、png、jpg、dmg ...) もダウンロードするつもりです。私を助けてくれる人がいることを願っています。これは私のコードです:
arrays - (1-D)配列の一部をアドレス指定する方法は?
私はCプログラミングの新規ユーザーです。これをオンラインで調べてみましたが、答えが見つかりませんでした... Cの配列の一部にアクセスするにはどうすればよいですか?例えば、
実行するための構文は何ですか:Data = Input [12:15]
実際には、TCPソケットを使用して配列の一部を埋めようとしています。
ここで、受信したデータを配列インデックス「indx」から「indx+1024」までのYRaw配列に配置します。
よろしくお願いします、gkk