ChrBで変換したコードをWinsockで正常に送るには?

解決


とも☆  2002-12-06 01:12:34  No: 76526

私の見落としや、勘違いなどで既出でしたら申し訳ありません。
現在以下のようにWinsock(UDP)で送受信を試みているのですが
受信データが正常に取れません。

送信側:

Dim strSendData As String

 strSendData = ChrB(Val("&H" + "8A")
 strSendData = strSendData + ChrB(Val("&H" + "8B")
 strSendData = strSendData + ChrB(Val("&H" + "8C")

 Winsock1.SendData strSendData

受信側:

Winsock2_DataArrival(ByVal bytesTotal As Long)
{

Dim strRecvData As String
Dim strExcData  As String

 Winsock2.GetData strRecvData

 strExcData = Hex(AscB(MidB(strRecvData, 1, 1)
 strExcData = strExcData + Hex(AscB(MidB(strRecvData, 2, 1)
 strExcData = strExcData + Hex(AscB(MidB(strRecvData, 3, 1)

これで「8A8B8C」と取れるかと思ったのですが
「8A8B3F…」と言ったようになってしまいます。
Winsockで送信の際にunicodeがANSIコードに変換される(?)らしいのですが
これを回避する方法をご存じの方がいらっしゃいましたら
誠に恐れ入りますがご教授いただきたいと思いますので、よろしくお願いいたします。


YuO  2002-12-06 01:27:38  No: 76527

バイト配列を送信すればいいのでは?


とも☆  2002-12-06 02:23:01  No: 76528

YuO様>
  バイト配列での送信は成功していました。
  ですが、受信側が現在はWindowsマシンなのですが
  将来は組込型のハードウエアを対象としているので
  バイト配列での転送が有効なのか解りません(汗)
  と言ってもハードウェアの仕様が解らないとお話しになりませんよね…。
  申し訳ありませんでした。


YuO  2002-12-06 03:32:04  No: 76529

> ですが、受信側が現在はWindowsマシンなのですが
> 将来は組込型のハードウエアを対象としているので
> バイト配列での転送が有効なのか解りません(汗)

問題ないです。
ソケットによる通信の両端がどのようなマシンであろうと,
送信内容が変化することはありません。

また文字列でUnicode→従来コードの変換が起きる以外に変換は起きません。
バイト配列を送ると,[下限, 上限]間のすべての要素の内容がそのまま送信されます。


とも☆  2002-12-06 22:36:45  No: 76530

そ、そうなんですかっ?!
うう…すいませんホントに情けない質問をしてしまいまして…。
ご丁寧に回答してくださったYuO様、本当に有り難うございました。
安心して開発を進めてがんばりますっ。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加