none
Socketの切断 RRS feed

  • 質問

  • Visual C#.netではじめる TCPネットワークプログラミングを読み

    本のサンプルを忠実に再現してサーバを作っていたのですがSocketをCloseするときエラーが発生してしまいます。

    TcpListenerがAcceptSocketの状態だとだめなのでしょうか?

    かといって、AcceptSocketじゃない状態にする方法がClose以外見当たらないですし、

    経験者の方こういったことはございましたでしょうか?

    アドバイスいただけるとありがたいです。

     

    2006年12月10日 9:41

すべての返信

  • 諸農です。

    TcpListener、Socket、Closeと色々と単語が出てきて、全体的に質問の内容が漠然としていますね。

    ちなみに書籍のサンプルコードがカットシステムのサイトから入手できますが、そのコードでもエラーになるということでしょうか。
    http://www.cutt.co.jp/books/internet_105.html

     

    2006年12月10日 10:30
  • SOSOSOSO さん、こんにちは。

     SOSOSOSO さんからの引用
    本のサンプルを忠実に再現してサーバを作っていたのですがSocketをCloseするときエラーが発生してしまいます。

    どのような例外でしょうか?

    こういった場合は、例外名、例外の詳細、スタック トレースなどを提示した方が良いですよ。

    2006年12月10日 11:34
  • カットシステムのサイトにアプリケーションやソースがそのまま置いてあるんですね。

    教えていただきありがとうございます。

    教えていただいたアプリケーションを起動して「スタート」を押して

    「ストップ」を押し、再び「スタート」を押すとエラーになりますね。

    元のコードがどうやらうまくないような気がします。

    ちょっと、本の内容を鵜呑み無しないほうがいいと思えてきました。

    ちなみに色々自分なりに調べてみたのですが、

    ほとんどのサイトでC#で一番基本的(?)な接続方法は

    TcpListenerとTcpClientを用いた方法なのに

    本だとTcpListenerとSocketを用いた接続でした。

     

     エラーについてですが

    socket.close()

    した場合、

    mysock = tcpL.AcceptSocket();

    の部分で

    ブロック操作は WSACancelBlockingCall の呼び出しに割り込まれました。

    とエラーがでました。

    でSocketではなくTcpClientでやってみたのですが、同様に

    Tcpc = tcpL.AcceptTcpClient();

    の部分で

    ブロック操作は WSACancelBlockingCall の呼び出しに割り込まれました。

    とエラーが返されます。

    2006年12月13日 14:42