掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ユーザー定義型をwinsockで送るには? (ID:119115)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
只今、クライアント・サーバシステムを用いた チャットソフトを作っておりまして、 winsockを使用して、TCP/IPでデータの送受信をしたいのですが、 送信したいデータは以下の文字列だけのユーザー定義型になっています。 Public Type DATAFILE DF_Command As String * 3 '送受信用コマンド DF_Name As String * 50 '送受信用ユーザー名 DF_Address As String * 16 '送受信用アドレス(IPアドレス) DF_Message As String * 255 '送受信用データ内容 End Type 過去ログを探したところ、 ユーザー定義型をバイト配列に置き換えて送ると良いとの事でした。 そこで、その方法を試してみたのですが、 送信時にはバイト配列から復元も出来るのですが、 受信になるとバイト配列から復元出来ません。 Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _ (destination As Any, source As Any, ByVal length As Long) Dim Byte_text() As Byte Dim SEND_DATA As DATAFILE Dim GET_DATA As DATAFILE '-- 送信 SEND_DATA.DF_Command = "MES" SEND_DATA.DF_Message = "test" SEND_DATA.DF_Name = "User" SEND_DATA.DF_Address = winsock(0).LocalIP ReDim Byte_text(LenB(SEND_DATA)) CopyMemory Byte_text(0), SEND_DATA, LenB(SEND_DATA) 'この時に復元は可能 winsock(0).SendData Byte_text '--受信 Private Sub winsock_DataArrival(Index As Integer, ByVal bytesTotal As Long) tcpSock(Index).GetData Byte_text, vbArray + vbByte, bytesTotal CopyMemory GET_DATA, Byte_text(0), bytesTotal Debug.Print GET_DATA.DF_Command '復元出来ず End Sub 復元する方法等、ご指摘がありましたら、 何方か教えて頂けないでしょうか?宜しくお願い致します。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.