- - PR -
VB2008文字列を結合できない?
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-03 17:41
VB2008でソケット通信をおこなっていますが、受信したメッセージにキャリッジリターンとラインフィードが含まれると文字列をうまく処理できません。
どなたかご存知ないですか? 以下ソース抜粋。 With objNetworkStream Do If .DataAvailable = True Then intReceiveLength = .Read(bytReceiveBuffer, 0, bytReceiveBuffer.Length) strReceivedData = System.Text.Encoding.Default.GetString(bytReceiveBuffer).Substring(0, intReceiveLength) If Not strReceivedData Is Nothing Then TextBox1.Text = "クライアントから「" & strReceivedData & "」を受信!" Debug.Print("「" & strReceivedData & "」") strIpAdd = Mid(strReceivedData, 5, 15) strIpAdd = Trim(strIpAdd) Debug.Print("IP=" & strIpAdd & vbCrLf) strSendDate = CStr(Format(DateTime.Now, "yyyyMMddHHmmss")) デバックを行っていると、文字列であるstrReceivedDataのデータ後半が認識されていないようです。 具体的には、 Dim strAA as String="123456789" とすれば、コーディング画面で変数にカーソルを合わせれば、"123456789"と表示されますが、strReceivedDataの場合、、"123456789 となり最後の"が表示されません。 VB6.0では正常なのですが、何か制限があるのでしょうか? | ||||||||
|
投稿日時: 2008-04-04 10:28
このことからして、CR や LF が受信されているのではなく不正な文字が受信されているのだと思われます。 不正な文字というと、たとえばですが NullChar の場合はモロにこの現象が起きます。
と同じ現象でしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2008-04-04 11:26
じゃんぬねっとさん、ご教授ありがとうございます。
おっしゃるとおり、不正なデータが出ているのかと思いVB6.0でも行ってみました。 もちろん、データを送信する機器は共通です。 ところが、VB6.0では正常にCR、LFを受信するのです。 ちなみに受信したデータの終わりに何があるのかVB2008のASC関数で調べてみましたが 51番でした。本当に51であれば表示されるはずですがそれも表示されません。 まったく原因がわからない状況です。 | ||||||||
|
投稿日時: 2008-04-04 11:32
これではあまり問題の切り分けにならないような気がします。 VB6 と比較検証するならば、同じデータを送信してバイナリ レベルで 1 つ 1 つ比較して 「完全に一致していることを確認」 しないと意味がありません。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
1