こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Winsock 受信について

Winsockをサーバとクライアントで動かして送受信についてです。
サーバでSendDataで送信、クライアントでGetDataの所です。

サーバーでSendDataを数回送信するとクライアントのGetDataではある程度まとめて受信します。

(1)サーバ側で送信
   Winsock.SendData "aaaaa"
   Winsock.SendData "bbbbb"
   Winsock.SendData "ccccc"
   Winsock.SendData "ddddd"

(2)クライアントで受信
   Winsock.GetData xyz

(1)のように送信した場合、(2)のxyzは
   ・aaaaabbbbbcc
   ・cccddddd
のように数回に分けて受信されます。

希望としましては、1データ送信に対して1データ受信が望ましいのですが。
実際のデータには全角はある為、このような希望となりました。
もしかして、不可能なのでしょうか。
わかる方、教えて下さい。

投稿日時 - 2013-03-21 13:22:25

QNo.8004285

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

Wr5

>希望としましては、1データ送信に対して1データ受信が望ましいのですが。
>実際のデータには全角はある為、このような希望となりました。
>もしかして、不可能なのでしょうか。

TCPはストリーム(連続したデータ)ですので、その上で走らせるプロトコルレベルで「1データ送信」の区切りを決めないと無理です。

たとえば、ファイルに複数回のデータを書き込んで、1024バイトにしたとします。
読み込む時に決め事なしの状態で、書き込んだ時と同じデータサイズの読み込みができるか?というのと同じことになります。

http://www.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html
の「3.4 - TCPのようなストリームプロトコルで、パケット単位の処理を強制するための正しい方法は?」とか。

参考URL:http://net-newbie.com/tcpip/tcp/tcp-intro.html

投稿日時 - 2013-03-21 13:52:26

お礼

回答、ありがとうございます。

投稿日時 - 2013-03-25 09:08:43

あなたにオススメの質問