• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ソケット通信)

2バイト文字の送信により受信データに表示が崩れる問題

このQ&Aのポイント
  • VB.NETのサンプルで2バイト文字を送信すると、受信データの閉じ括弧以降の文字が表示されない問題が発生します。
  • 2バイト文字を使用すると、受信データの表示が崩れる原因の1つは、受信データが半角ダブルクォーテーションで囲まれておらず、そのため閉じ括弧以降の文字が表示されないことです。
  • この問題を解決するには、受信データを表示する前に、2バイト文字を含む場合には半角ダブルクォーテーションで囲む必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

サーバー側の文字列構築部分に問題があるようです Substringが文字数で引数を管理しているのに、与えられるのがソケットから読み込んだバイト数になっているのでおかしくなるようです 直接構築するのではなく 1クッションおいたほうがいいようです Dim ss as String = System.Text.Encoding.Default.GetString(bytReceiveBuffer) if ss.IndexOf( chr(0) ) > -1 then   ss = ss.Left( 0, ss.IndexOf( chr(0) ) ) end if strReceivedData &= ss といった具合でしょう または Encodingする文字列をByte配列のどの範囲かを指定して文字列化します strReceivedData &= System.Text.Encoding.Default.GetString(bytReceiveBuffer).Substring(0, intReceiveLength) のGetStringで範囲を絞ってしまいます strReceivedData &= System.Text.Encoding.Default.GetString(bytReceiveBuffer, 0, intReceiveLength)

mono-001
質問者

お礼

回答ありがとうございます。 前者のほうをやろうとすると 'Left'は'String'のメンバではありません。 というエラーになるようで動作は見れませんでしたが、 後者のほうで実行すると ちゃんと2バイト文字が混じっていても表示が正しくなりました。 ありがとうございました。

関連するQ&A