私の見落としや、勘違いなどで既出でしたら申し訳ありません。
現在以下のように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様>
バイト配列での送信は成功していました。
ですが、受信側が現在はWindowsマシンなのですが
将来は組込型のハードウエアを対象としているので
バイト配列での転送が有効なのか解りません(汗)
と言ってもハードウェアの仕様が解らないとお話しになりませんよね…。
申し訳ありませんでした。
> ですが、受信側が現在はWindowsマシンなのですが
> 将来は組込型のハードウエアを対象としているので
> バイト配列での転送が有効なのか解りません(汗)
問題ないです。
ソケットによる通信の両端がどのようなマシンであろうと,
送信内容が変化することはありません。
また文字列でUnicode→従来コードの変換が起きる以外に変換は起きません。
バイト配列を送ると,[下限, 上限]間のすべての要素の内容がそのまま送信されます。
そ、そうなんですかっ?!
うう…すいませんホントに情けない質問をしてしまいまして…。
ご丁寧に回答してくださったYuO様、本当に有り難うございました。
安心して開発を進めてがんばりますっ。
ツイート | ![]() |