問題タブ [sendto]
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.
linux - sendo() write writev() を組み合わせる?
私はudpソケットを設定し、呼び出しごとに異なる受信者でsendto()を呼び出しました。
scater/gather io を利用するために writev() を使用したいのですが、writev() では sendto() のように受信者のアドレス/ポートを指定できません。助言がありますか?
c - send() または sendmsg() がメッセージを正常に配信したことを知るには?
TCP ソケットを使用して通信する単純なクライアントおよびサーバー プログラムをセットアップしました。サーバーは、クライアントからのメッセージを受信したかどうかにかかわらず、クライアントが接続して応答するのを待ちます。以下は、サーバーとクライアントでのコードの実装方法です。
サーバー側のコード:
クライアント側のコード:
ここで、サーバーを起動してからクライアントを起動したとします。クライアントはサーバーに正常に接続します。次に、サーバーをシャットダウンし、クライアントからメッセージを送信しようとしましたが、write()
操作はエラーを返しません。ここで期待しているのは、サーバーが実際にパケットを受信しない (シャットダウンされている) ため、エラーです。
だから私の質問は: write()
(またはsend()
、sendto()
またはsendmsg()
) がメッセージをサーバーに正常に配信するかどうかを知る方法はありますか?
c++ - C++: サーバーとクライアント間の古典的な通信演習
良い一日。
低レベルの C プログラミングを学んでいるコンピューター サイエンスの学生として、私はサーバーとクライアントの通信プログラムを作成するという「古典的な」演習に行き詰まっています。
目標は、リモート クライアント コンポーネントからコマンドを受け取り、それをローカル シェル コマンドとして実行するサーバー コンポーネントを開発することです。次に、コマンドの出力が再度クライアントに送信されます。ものすごく単純。
私のコードはクライアントからコマンドを送信し、サーバーはそれを正常に受信して実行し、出力をキャプチャします。しかし、この時点で、sayd サーバーがその出力をクライアントに返信しようとすると、何かがうまくいかず、クライアントは何も受信しません。問題がサーバー側にあるのか、クライアント側にあるのかはわかりません。
何か案が?前もって感謝します!
サーバ:
クライアント:
fprintf(stderr, ""); ですべてのトレースを出力するとします。そのため、フォークによって端末のフォーカスが失われることは問題になりません。
さようなら、そしてありがとう!
sockets - 「sendto()」関数は、別のコンピューター上のアプリケーションにデータを送信しません
サーバーに情報を送信し、サーバーのターミナルウィンドウに出力するLinuxのposixソケットAPIを使用して、cでクライアントアプリケーションを作成しました。サーバーがクライアントと同じマシン上にあり、クライアントがループバックまたは独自の IP アドレスに送信する場合、すべて問題ありません。ただし、サーバーが別のマシンで実行されている場合、sendto は「引数が無効です」というエラーを返します。
クライアント アプリケーションのコードは次のとおりです。
アプリケーションが別のコンピューターに送信されない理由についての情報をいただければ幸いです。前もって感謝します!!
python - Python - sendto()の戻り値は役に立たない?
私の最近のプロジェクトでは、UDP プロトコルを使用してデータを送信する必要があります。を使用してデータを送信する場合size = s.sendto(data, (<addr>, <port>))
、UDP プロトコルはデータが 1 つの UDP パケットにパックされることを保証しますか? もしそうなら、size == len(data)
常にTrue
ですか?私が誤解したことはありますか?
より正確には、「sendto()」はデータをいくつかの小さなチャンクに分割し、各チャンクを UDP パケットにパックして送信しますか?
c - sendto: 引数が無効です
プログラム (クライアント) が C のソケットを使用して別の (サーバー) と通信しようとしていますが、サーバーから常に "Invalid Argument" エラーが発生します。
何が起こっているのかを説明した後、この問題に関連するコードを示します。
クライアントに関しては、すべてが正しく機能していると思います。クライアントはサーバーにリクエストを送信し、サーバーはメッセージを正しく受信しますが、サーバーが応答しようとすると「無効な引数」エラーが発生します。
これは、サーバーのメイン関数で使用される変数の宣言です。
ここでは、ソケットを hostAdress にバインドします。
少しコードを記述した後、recvfrom を次のように使用して、情報を受信するループに入ります。
サーバーがリクエストを受信すると、それを識別し、この関数にジャンプします (この動作は確認されています)。
sizeof(clientAdress) を実行して「clientAdressLength」を取得できることは承知していますが、これを行うと、前回同じ問題が修正されました。この関数は次のように宣言されます。
この関数では、主な変数は次のとおりです。
stshort は、バッファーの最初の 2 バイトに short int を配置する単純なマクロです。これは意図したとおりに機能します。
それが完了すると、次のことを試みます。
...そして、これは物事がうまくいかないときです。sendto が を返し-1
、使用perror("sendto");
すると " Invalid Argument
" エラーが発生します。パラメータを代入するための千の異なる方法を試しましたが、エラーを見つけることができません。この種の問題に関しては、他の選択肢を使い果たしました (つまり、大学の教師に尋ねて、より上級の同僚にコードを見せます)、誰もエラーを見つけることができなかったようです。補足として、私は使用します
サーバーが閉じる信号を受信したときですが、この機能に到達する前に一度強制的に閉じる必要があったかもしれません。
これを読んでいる人は誰でも、お時間をいただきありがとうございます!