VB.NETのSocket受信に変な改行

VB.NETで、教科書通りにソケット通信。

  1. System.Net.Sockets.Socketクラスのインスタンスを作成、BeginAccept()でコネクションを待ち受け。
  2. 接続要求が来たらEndAcceptを呼んで返ってきたSystem.Net.Sockets.Socketクラスのインスタンスを保持。
  3. このインスタンスにBeginReceive()を呼んで、作成済みのdelegateをセットする。
  4. データが来るとdelegateが呼ばれるので、とりあえずSystem.Byteクラスの配列に格納。
  5. ある程度データが溜まったら、System.Text.Encoding.ASCII.GetString()でStringクラスに変換し処理する。

こうやってStringクラスに格納した受信データですが、Windows標準のtelnetだと問題無いのに、UTF-8 Teraterm Pro with TTSSH2LinkPoderosaLink でデータを送ると、改行コードが変。¥r(13h)の後に正体不明の文字が。送信改行コードをCRにしてもCR+LFにしても出る。この文字、Microsoft.VisualBasic.AscW()で変換しません。何だコリャ?

今のところ受信データはASCIIテキストということで、以下の方法で除去。これで実用上問題無いけど、何か気になるな・・・

str = System.Text.RegularExpressions.Regex.Replace(str, "[^0-9a-zA-Z!-/¥r¥n¥s]", "")

— posted by mu at 05:49 pm   commentComment [0]  pingTrackBack [0]

この記事に対する TrackBack URL:

設定によりTB元のページに、こちらの記事への言及(この記事へのリンク)がなければ、TB受付不可となりますのであらかじめご了承下さい。

コメントをどうぞ。 名前(ペンネーム)と画像認証のひらがな4文字は必須で、ウェブサイトURLはオプションです。

ウェブサイト (U):

タグは使えません。http://・・・ は自動的にリンク表示となります

:) :D 8-) ;-) :P :E :o :( (TT) ):T (--) (++!) ?;w) (-o-) (**!) ;v) f(--; :B l_P~ (QQ)

     

[X] [Top ↑]

T: Y: ALL: Online:
ThemeSwitch
  • Basic
Created in 0.0185 sec.
prev
2007.4
next
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30