皆さん方には、いつも大変お世話になっております。
http://codezine.jp/a/article.aspx?aid=22
上記のサイト(DOBON.NET関係。http://dobon.net/)
から入手した、TCPチャットのサーバー側で、例外「この操作を行う前に Bind メソッドを呼び出してください」がでます。
'クライアントの接続待ちスタート
Private Shared Sub StartAccept( _
ByVal server As System.Net.Sockets.Socket)
'接続要求待機を開始する
server.BeginAccept(New System.AsyncCallback( _
AddressOf AcceptCallback), server)
End Sub
'BeginAcceptのコールバック
Private Shared Sub AcceptCallback(ByVal ar As System.IAsyncResult)
'サーバーSocketの取得
Dim server As System.Net.Sockets.Socket = _
CType(ar.AsyncState, System.Net.Sockets.Socket)
'接続要求を受け入れる
Dim client As System.Net.Sockets.Socket = Nothing
Try
'クライアントSocketの取得
client = server.EndAccept(ar)
Catch
System.Console.WriteLine("閉じました。")
Return
End Try
'クライアントが接続した時の処理をここに書く
'ここでは文字列を送信して、すぐに閉じている
client.Send(System.Text.Encoding.UTF8.GetBytes("こんにちは。"))
client.Shutdown(System.Net.Sockets.SocketShutdown.Both)
client.Close()
'接続要求待機を再開する
server.BeginAccept(New System.AsyncCallback( _
AddressOf AcceptCallback), server)
End Sub
'接続要求待機を開始する
server.BeginAccept(New System.AsyncCallback( _
AddressOf AcceptCallback), server)
ここで、例外が発生します。
tcpには、あまり慣れていないので、さっぱりわかりません。
どうすればよいのでしょうか?
リンク先のソースを改造しませんでした?
足りない箇所がありますよ。
Dim so As New AsyncStateObject(server)
server.BeginAccept(New System.AsyncCallback( _
AddressOf AcceptCallback), so)
DOBONさんのとこに掲示板あるんですが、あえてここですか?
>リンク先のソースを改造しませんでした?
>足りない箇所がありますよ。
>Dim so As New AsyncStateObject(server)
>server.BeginAccept(New System.AsyncCallback( _
> AddressOf AcceptCallback), so)
すみません。サーバー側について教えてください。
(伝わってなくてすみません)
>DOBONさんのとこに掲示板あるんですが、あえてここですか?
すみません。
すみません、確かにクライアント側見てましたね(^^;
編集 削除で、Bind はやってるんですか?
デバッグでちゃんと呼び出していることは確認しましたか?
やはり呼び出す必要があったのですね(当然のことですみません;)
IPEndPointの指定はどうやるんですか?
いろいろいじってデバッグ成功したのがこれです。(実際にクライアントを接続してみないとわかりませんが。)
'接続要求待機を開始する
Dim hostAdd As System.Net.IPAddress = System.Net.Dns.Resolve("localhost").AddressList(0)
server.Bind(New System.Net.IPEndPoint(hostAdd, 2001))
server.Listen(10)
server.BeginAccept(New System.AsyncCallback( _
AddressOf CALLBACK), server)
Listenのところの 引数 キューの最大長 ってなんですか?
なんとか自力で解決できました。
お騒がせしました。すみません。
ありがとうございました。
解決チェック。
編集 削除