- PR -

VB.NETでのソケット通信

1
投稿者投稿内容
むっく
会議室デビュー日: 2007/11/03
投稿数: 18
投稿日時: 2007-11-03 21:11
VB.NET上でのソケット通信を行おうとしていますが,
2回目の受信(Readメソッド)がうまく行かず,処理が止まってしまいます.
なお,あるサーバに対して,プライベートポートで接続しようとしています.
同じコネクションで複数回データを送受信できるものなのでしょうか?
また,できるとすれば,どのようにしたらよいのか教えていただきたいです.
※MSDNのソケット通信を実装する方法のクライアントのソースを参考にしました.

Module Module1
Sub Main()
Dim portNum As Integer = XXXXX 'ポート番号を指定
Dim hostName As String = "XXXXXX" 'ホスト名
Dim client As New System.Net.Sockets.TcpClient(hostName, portNum)
Dim ns As System.Net.Sockets.NetworkStream = client.GetStream()
Try
'----受信----
'サーバに接続すると何かしら文字を返すので,先に取得しています
Dim bytes(1024) As Byte
Dim bytesRead As Integer = ns.Read(bytes, 0, bytes.Length)
Console.WriteLine(System.Text.Encoding.Default.GetString(bytes, 0, bytesRead))

'----送信----
If ns.CanWrite Then
Dim word As Byte() = System.Text.Encoding.Default.GetBytes("処理文字列送信")
ns.Write(word, 0, word.Length)
End If

If ns.CanRead Then
Dim bytes2(1024) As Byte
Dim bytesRead2 As Integer = ns.Read(bytes2, 0, bytes2.Length)
Console.WriteLine(System.Text.Encoding.Default.GetString(bytes2, 0, bytesRead2))
End If


Catch ex As Exception
Console.WriteLine(ex.Message)
End Try

ns.Close()
client.Close()
End Sub
End Module




[ メッセージ編集済み 編集者: むっく 編集日時 2007-11-03 22:45 ]
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-11-03 22:39
引用:

同じコネクションで複数回データを送受信できるものなのでしょうか?



もちろんできます。

引用:

また,できるとすれば,どのようにしたらよいのか教えていただきたいです.



そのコードでほぼ問題ないです。
ポート番号の部分がなんか変ですが、
問題ないコードだと思います。
#このままで使うことは殆ど無いと思いますが。

SocketのRead、Writeがいつ完了するか、
サーバーがどう振舞うのか、
その辺をMSDNなどでよく調べるといいでしょう。

Socketを知らなければSystem.Net.Sockets.Socketを使うのは大変なので、
有名な
http://tangentsoft.net/wskfaq/
で勉強するのもいいと思います。
むっく
会議室デビュー日: 2007/11/03
投稿数: 18
投稿日時: 2007-11-04 01:04
れいさんありがとうございます.

問題解決しました.
単に改行コードの問題でした..
お騒がせしてすみません.
1

スキルアップ/キャリアアップ(JOB@IT)