2011-05-02 13 views
0

私はまったく新しいソケットプログラミングであり、私のプログラムは期待したように動作しません。ソケットプログラミングのすべての例では、accept()を使用し、その後のすべてのコードは接続が確立されていると仮定しています。ソケットプログラミングaccept()in C

しかし、サーバーを起動するとすぐに私のaccept()が呼び出されます。これは起こるはずですか?または、サーバーはプログラムの残りの部分を実行する前に接続を待つことになっていますか?

EDIT:私はそれがTCP接続であることを忘れていました。

+2

コードを表示してください。 –

+0

あなたはどのOSですか? –

答えて

0

私はこれがあなたの後であると思います。

http://www.sockets.com/winsock.htm#Accept

winsocketプログラミング内のメインコンセプトは、あなたが、ブロッキングまたは非ブロッキングソケットのどちらかで作業しているです。あなたがブロッキングソケットを使用している場合は、ほとんどの場合、ソケット受信を照会して、呼び出しがブロックされるルーチンが呼び出されるかどうかを調べることができます。

このUDPで始めるのは、データグラムプロトコル。一方、TCPはストリーミングプロトコルです。したがって、送受信されるデータのブロックに関して考えるのは簡単です。サーバーの場合

0

、あなたは:

  • ソケットを作成します - socket()
  • アドレスにバインドします。
  • あなたは中にあなたのループを入力します。
    • 接続が
    • を試みるために聞く

それらを受け入れて処理あなたがすべてのこれらの手順を行っているかどうか、あなたの説明から明らかではありません。

あなたはシングルスレッドの単一プロセスは次の処理をする前に一つのリクエストを処理するか、またはあなたが持っていることを計画するかどうかを持っていることを計画かどうかに応じて「プロセスそれら」相、のための複数のオプションがあり、マルチスレッド、単一(一方のスレッドが次の着信接続を待っている間)、または親プロセスに戻っている間に新しい要求を処理しているプロセスフォークを持つかどうかを指定します次の要求を待ち受ける。

0

接続のリッスンを開始した後に受諾ループを開始することになっています。保留中のクライアント接続が受け入れられる準備ができた時点を検出するには、select()を使用し、それを受け入れるにはaccept()を呼び出します。

関連する問題