05/04/08 06:21:05
>>692
Readがパケットごとに実行される保証はどこにもないはずだがね。
> strText += System.Text.Encoding.ASCII.GetString(ByteRead, 0, intLength)
まあASCIIだからいいけど、shift_jisとかだとデコードに失敗する可能性があるよ。
最後の1バイトが2バイト文字の1バイト目だった場合に。
受信中はMemoryStreamに蓄えて、受信が完了してから一気にGetStringしたほうがいい。
> Do
(略)
> If intLength < 1 Then Exit Do
> Sock1.Close()
> Loop
このSock1.Close()はコピペミスかな?
Loopの外に出さなきゃいけないね。
> Me.Text = "受信パケット数:" & lngRevcnt & " (" & lngRevByt & " byte)"
> TextBox1.Text = strText
やっかいなのはこいつだ。
別スレッドからコントロールを操作しちゃいけない。
Invoke/BeginInvokeを使う必要がある。
URLリンク(dobon.net)
の19から26、とくに25を良く読んでマルチスレッドに関する問題を良く把握してくれ。