トップ回答者
Socketを使用したサーバー作り

質問
-
こんにちは。
Socketを使用したサーバーをつくってますが
[Visual Basic 2008]
Private _Socket As Socket
----------------------------
'ソケットの生成
_Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
'ソケットの対応付け
Dim LocalIPAdress As IPAddress = IPAddress.Parse("XXX.XXX.XXX.XXX")
Dim SetIPEndPoint As IPEndPoint
SetIPEndPoint = New IPEndPoint(LocalIPAdress, CInt(XXXX))
_Socket.Bind(SetIPEndPoint)
'接続要求待ち
_Socket.Listen(1)
'接続要求の受付
_Socket.Accept()
Dim buffer(1024) As Byte
Dim returnValue As Integer
returnValue = _Socket.Receive(buffer, buffer.Length, SocketFlags.None)
まで進んだところで
ソケットが接続されていないか、sendto 呼び出しを使ってデータグラム ソケットで送信するときにアドレスが指定されていないため、データの送受信を要求することは禁じられています。
というエラーが発生します。
Acceptで接続要求は受け付けて、接続はできているようなのですが・・・・
どなたかご教授下さい。
因みに、今回はTcpListenerでなく、Socketで試みていますので、TcpListenerでない方法でお願い致します。
回答
-
Socket.Acceptの戻り値は確認されていますか?
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket.accept.aspx
> TCP などのコネクション指向のプロトコルを使用する場合、サーバーは Listen メソッドを使用して接続を待機します。
> Accept メソッドは受信接続要求を処理して、リモート ホストとのデータ通信に使用できる Socket を返します。
> この返された Socket を使用して、Send メソッドまたは Receive メソッドを呼び出します。
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket.aspx より。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク ひよこプログラム 2009年5月31日 23:20
すべての返信
-
Socket.Acceptの戻り値は確認されていますか?
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket.accept.aspx
> TCP などのコネクション指向のプロトコルを使用する場合、サーバーは Listen メソッドを使用して接続を待機します。
> Accept メソッドは受信接続要求を処理して、リモート ホストとのデータ通信に使用できる Socket を返します。
> この返された Socket を使用して、Send メソッドまたは Receive メソッドを呼び出します。
http://msdn.microsoft.com/ja-jp/library/system.net.sockets.socket.aspx より。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク ひよこプログラム 2009年5月31日 23:20