問題タブ [berkeley-sockets]
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 - Linux '500''上のftpクライアント:コマンドが理解されていません。'
私はbsdソケット上のファイルのリストを取得するために単純なftpクライアントを作成しようとしています。ここにあります:
ワークステーションのdebianリポジトリ(ftpd)からftpサーバーを使用しています。私はこのコードを実行しようとしましたが、パスワードサーバーを送信すると、500'':コマンドが理解できませんでした。私はwiresharkを使用して何が起こるかを確認し、プログラムのすべてのパッケージが正常に見えるようにします。ftpコマンド(Linuxの軽量ftpクライアント)を使用して接続すると機能しますが、そのクライアントのパッケージは自分のクライアントのパッケージと同じように見えます。何か案は?
c - getaddrinfo() がエラー コード「1」を返す原因は何ですか?
多かれ少なかれ、タイトルに書かれていること。次のように getaddrinfo を呼び出しています。
誇らしげに印刷します:
私のシステムで。
私のシステムの getaddrinfo man ページ:
これは、getaddrinfo によって返されるすべてのゼロ以外のコードが、リストされている EAI_* ファミリ コードの 1 つである必要があることを示唆しています。オンラインで検索すると、gai_strerror() は、EAI_* ファミリーのメンバーではないエラー コードが渡された場合にのみ「不明なエラー」を返すことが示唆されています。
どうやら私はここで何か間違ったことをしているようですので、どんな支援も大歓迎です!
c - ソケットをIPv6アドレスにバインドする
IPv4アドレスとIPv6アドレスの両方をリッスンするWebサーバーを作成しようとしています。しかし、私が最初に書いたコードは機能しませんでした。次に、IPv6構造がIPv4とIPv6の両方で機能することを発見しました。そのため、現在はIPv6構造を使用していますが、IPv4アドレスのみが機能します。この投稿では、 ipv6ソケットをリンクローカルアドレスにバインドできないのはなぜですか。追加すると言われているので、追加しましたが、IPv6telnetserver.sin6_scope_id = 5;
接続はまだ受け入れられません。私は完全に困惑しているので、どんな助けでも大歓迎です。
ありがとう!
私のコードは以下の通りです:
c++ - Berkeley Socket Sendは、非ブロッキング送信が成功すると0を返します
私はノンブロッキングチャットサーバーを書いていますが、これまでのところサーバーは正常に動作していますが、部分的な送信が発生した場合に修正する方法がわかりません。send(int、char *、int); 関数は、成功した場合は常に0を返し、失敗した場合は-1を返します。私が読んだすべてのdoc/manページには、実際にネットワークバッファにフィードされたバイト数を返す必要があると書かれています。サーバーに送信し、問題なくデータを繰り返し受信できることを確認しました。
これは、送信を呼び出すために使用する関数です。私は両方とも最初に戻りデータをコンソールに出力しようとし、次に戻り戻り値で改行を試みました。デバッグ中。同じ結果、ReturnValueは常に0または-1です。
c - How to notify an abnormal client termination to server?
As the Title already says im looking for a way, to get notified when a client closes his Session unnormal.
I'm using the freeBSD OS. The server is running with Xamount threads (depending on CPUcore amount). So I'm not forking, and there isn't a own process for each client.
That's why sending an deathpackage all time_t seconds, to recive a SIGPIPE isn't an option for me. But i need to remove left clients from the kqueue, because otherwise after too many accept()'s my code will obviously run into memory troubles.
Is there a way, I can check without high performance loose per client, they are connected or not?
Or any event-notification, that would trigger if this happens? Or maybe is there a way of letting a programm send any signal to a port, even in abnormal termination case, before the Client process will exite?
c++ - FIONREAD 戻り値を持つ ioctl
この質問は、udp ソケットの FIONREAD は何を返しますか? に関連しています。
Macで次のコードを使用しようとしました:
すべての呼び出しでnumBytesRecv != 0
、numBytesRecv == totalPending - 16
なぜこれが起こるのか説明してもらえますか?この戻り値は正しいですか? numBytesRecv == totalPending - 16
はいの場合、すべての値について仮定してもnumBytesRecv != 0
よろしいですか?
c - recv を使用してソケットからデータを受信できない
サーバーの応答をブラウザーに返す前に、ポートで要求をリッスンし、その要求を別のサーバーに渡す、BSD ソケットを使用して単純なプロキシ サーバーを作成しようとしています。
以下のコードを使用して、ブラウザーから REST 要求を受け取ることができます。
ただし、recv()
接続がピア (この場合はブラウザー) によって閉じられた場合は 0 を返す必要がありますが、そうではありません。recv()
接続が閉じられたかどうかを検出できる唯一の方法は、応答が から要求された最大量の 512 バイト未満であるかどうかを確認することです。一部のリクエストが不完全であるため、これは時々問題になります。
受信するデータがこれ以上ない場合は、recv()
ブロックして戻りません。受け入れられた記述子を非ブロックに設定すると、読み取りループが永遠に続き、終了することはありません。
もし私が:
リスニング ソケット記述子をノンブロッキングに設定すると、接続
EAGAIN
しようとするとエラー (リソースが一時的に使用不可) が発生するaccept()
受け入れられたソケット記述子を非ブロックに設定し、
recv()
決して 0 を返さず、ループを永久に続行しますaccept()
両方を非ブロッキングに設定すると、接続しようとすると「不正なファイル記述子」エラーが発生しますどちらもノンブロッキングに設定しないでください。ループは
recv()
決して返されないため、終了しません。
ソケット自体は次のように作成されますが、リクエストを検出できるため、初期化に問題はありません。
この関数は、 1 を返すstartListening()
場合にのみ呼び出されます。initSocket()
私はおそらくここでばかげたことをしていますが、この問題とそれを修正する方法についてあなたが持っているかもしれない情報をいただければ幸いです.
c - TCP 接続を介したバークレー ソケットによる可変構造サイズの送信
C で定義された次の構造があり、Linux のクライアントとサーバー間のTCP 接続を介して Berkeley Socket を使用して送信したいと考えています。
ローカル送信マシンで可変サイズのデータを割り当てるために使用できるポインターである「char *data」があるため、この構造体を2回に分けて受信側に送信する必要があります。初めて、固定変数、つまり最初の 3 つの変数のみを送信します。そして、受信時に、長さのサイズのバッファーを割り当てて、2 回目のデータ部分を受信します。
だから私の質問はとにかく、この構造を可変データフィールドサイズで反対側に1回だけ送信することです.2回ではありませんか?
どうもありがとう。