通知
すべてクリア
Topic starter
2002年10月11日 2:44 PM
C言語
Solaris
ソケット通信で、サーバ側の終了をCtrl+Cのシグナルを拾って行っています。
クライアントが接続、切断を行ったのち、サーバ側をCtrl+Cで終了した場合は、
再度サーバ側を起動しても、エラーが発生することはありません。
しかし、クライアントが接続、その後サーバ側をCtrl+Cで終了、
クライアント側はサーバが落ちた事を拾って終了。
すると、再度サーバ側を起動すると、bindで134のエラーが発生してしまいます。
errno.hを見ると”Address already in use”と書いてありましたが、
Ctrl+Cのシグナルを拾った後、
shutdown( socket);
close( socket );
としています。
shutdownではかならずエラーが発生していて、エラーコードが、134(Socket is not
connected)でした。
サーバ側からの終了後は、必ずbindでエラーが発生するものなのでしょうか?
それとも何か抜けているのでしょうか?
教えてください。
2002年10月15日 2:53 PM
bindしたソケットは単純に待っているだけですから,
shutdownでシャットダウンを通知する相手はいません。
つまり,bindしたソケットに対してshutdownは不要です。
あと,ソケットを閉じるのはclosesocketです。
Topic starter
2002年10月17日 1:35 PM
>YuO
遅くなりました。解決しました。ありがとうございます。