- ベストアンサー
Winsockを利用したファイルの送受信について
- VisualBasicでwinsockを利用してjpg画像の転送を行いたいがうまくいかない。
- クライアント側では、ソケット1で通信の制御信号を送受信し、ソケット2で画像データを送信する。
- 画像は2分割にして送られる。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>例えばファイルサイズが1000バイトで、クライアント側からサーバ側に >Senddataで1000バイトを送信すると、サーバ側では700バイトとか >違った数字で受信されてしまいます。これは、BytesTotalの値のことです。 >どうしてそうなるのか、全く理解できません。 そういう仕様だからです。 WinSockでは受信処理で、受信データの制御はできません。 あなたのプログラムで、予期しないバイト数でデータを受信したときの処理を 実装する必要があります。
その他の回答 (1)
- hiromichel2000
- ベストアンサー率0% (0/1)
hiromichelです。 先ほどの続きです。サーバ側のほうはこのようになっています。 Private Sub Winsock2_DataArrival(ByVal bytesTotal As Long) Dim buf() As Byte Static counter As Long If StateFlag = 1 Then ReDim buf(bytesTotal - 1) Winsock2.GetData buf ', vbArray + vbByte, bytesTotal Put #f, , buf StateFlag = 1 Winsock1.SendData "reciv1" End If If StateFlag = 1 Then ReDim buf(bytesTotal - 1) Winsock2.GetData buf ', vbArray + vbByte, bytesTotal Put #f, , buf If ProgressBar1.Value = ProgressBar1.Max Then counter = counter + 1 Close #f DoEvents と、ソースは上のようになっていますが、問題は、 例えばファイルサイズが1000バイトで、クライアント側からサーバ側に Senddataで1000バイトを送信すると、サーバ側では700バイトとか 違った数字で受信されてしまいます。これは、BytesTotalの値のことです。 どうしてそうなるのか、全く理解できません。締め切りが近くて困ってます...。 良いアドバイス、解決法などを待っています。どうかお願いします。
お礼
ありがとうございます。 やってみます。 どうもありがとうございました。 初心者なので、またわからなくなったら質問しますのでどうぞ よろしくお願いします。
補足
いろいろしらべてみまして、なんとかできました。 ありがとうございました。