VB6でメールの送受信のプログラムを作成しています。
ソケットからws2_32.dllのrecvでデータを受信しようとしていますが、下記のようにすれば文字列としては受信できるのですが、文字列ではなくバイト配列で受信することはできるのでしょうか?
Dim strRecv AS String * 2048
lngRet=recv(MySocket, ByVal strRecv, Len(strRecv), 0)
1回のrecvで受信できないと、何回かに分かれて受信するのですが、文字列で受け取るとたまに途中で文字化けを起こしてしまうのです。
recvでなくてもソケットからバイト配列で受信する方があれば助かります。
よろしくお願いします。
API の宣言の第2引数を変更しましょう。
Declare Function recv Lib "wsock32.dll" (ByVal s As Long, buf As Byte, ByVal length As Long, ByVal flags As Long) As Long
こんな感じで使えます。
Dim Buffer(256) As Byte
nRet = recv(nSocket, Buffer(0), 256, 0)
Winsock コントロールでのやりかたは
http://madia.world.coocan.jp/cgi-bin/VBBBS/wwwlng.cgi?print+200606/06060018.txt
にあるようです。
Kozさん
おかげさまで無事バイト配列で取得することができました。
ありがとうございました。
ツイート | ![]() |