• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Winsockを利用したファイルの送受信について)

Winsockを利用したファイルの送受信について

このQ&Aのポイント
  • VisualBasicでwinsockを利用してjpg画像の転送を行いたいがうまくいかない。
  • クライアント側では、ソケット1で通信の制御信号を送受信し、ソケット2で画像データを送信する。
  • 画像は2分割にして送られる。

質問者が選んだベストアンサー

  • ベストアンサー
  • zerosix
  • ベストアンサー率31% (47/149)
回答No.2

>例えばファイルサイズが1000バイトで、クライアント側からサーバ側に >Senddataで1000バイトを送信すると、サーバ側では700バイトとか >違った数字で受信されてしまいます。これは、BytesTotalの値のことです。 >どうしてそうなるのか、全く理解できません。 そういう仕様だからです。 WinSockでは受信処理で、受信データの制御はできません。 あなたのプログラムで、予期しないバイト数でデータを受信したときの処理を 実装する必要があります。

hiromichel
質問者

お礼

ありがとうございます。 やってみます。 どうもありがとうございました。 初心者なので、またわからなくなったら質問しますのでどうぞ よろしくお願いします。

hiromichel
質問者

補足

いろいろしらべてみまして、なんとかできました。 ありがとうございました。

その他の回答 (1)

回答No.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の値のことです。 どうしてそうなるのか、全く理解できません。締め切りが近くて困ってます...。 良いアドバイス、解決法などを待っています。どうかお願いします。     

関連するQ&A