Winsockでデータ収集

解決


さい  2004-12-08 02:28:40  No: 118081

いつお世話になります
WINDOWS2000  VB6.0SP6  で
WINSOCK  で  複数のネットに接続して
データがランダムに送ってこられます
データを一回送信ごとの単位でで取りたいのですが
どうしても
受信の処理が重なると繋がってします
何か、良い手はないでしょうか?


いな  2004-12-08 04:18:22  No: 118082

昔、あるシステムで、
4個所のネットに接続しデータのやり取りを行ったことがありましたが

そのときは、WinSockを4つ用意しデータの送受信を行った覚えがあります。

そうすることにより、異なるネット間のデータの混在を防いでました。


ねろ  2004-12-08 05:03:35  No: 118083

テキストファイルかバイナリーファイルかにもよりますが、
自分でプロトコールを作って、送信の始めと終わりに付けるとか。
たとえば<start>Hello world!<end>などと。


さい  2004-12-08 19:34:29  No: 118084

いなさん、ねろさん
WinSockをネットの分だけ用意して、
ネット間のデータの混在を防げました
有難うございました

送信から一方的に
ランダムで送信してくるため
受信処理のタイミングで
1回のデータでなく
何回か分が繋がって受信されます
1回のデータづつ取る方法を
教えて下さい?


いな  2004-12-08 19:48:28  No: 118085

それそこ、ねろさんの記述にあるとおり、
送信する側との規約を作ることによって防げます。

よくやる手段は、
最初に何バイト(で一回分か?)+データの中身という形式で統一するとか

たとえば、20821242004
というデータを受け取った場合、
最初は、2桁で08というデータ、
その次に同じく2桁のデータで12っていうデータ
最後に4桁で2004というデータというように
受信が重なってもわかるような送信と受信の始めと終わりを設定するとか。
(<Start><End>もいいのですが、やはり文字列で判断するのは怖いので)


ねろ  2004-12-08 20:31:31  No: 118086

送られてくるデーターがテキストならテキストで処理し、
送られてくるデーターがバイナリーならバイナリーで処理する
方法が合理的かな。UDPかTCP/IPかにもよりますが。
いずれにしろ、受け側ではどこが頭で、どこがしっぽかは、
送り側で、一工夫しないと、判断できません。
ランダムにデーターを送ってくるって、チャットのプログラムかな。
それともスパイウェアーのようなものとか、まさかそんなことは無いか。


de  2004-12-08 21:22:00  No: 118087

>1回のデータでなく
>何回か分が繋がって受信されます
>1回のデータづつ取る方法を
>教えて下さい?

1回のデータでなく何回か分か繋がっているとあなたが判断できている
ということは、これを見れば、ここでデータの区切りだということは
分かっているということですよね?

それを見てデータを区切れば良いだけのことでは?


さい  2004-12-13 19:05:16  No: 118088

いなさん、ねろさん、deさん
              有り難うございました
送信側の変更が難しいため
自分で分析して
やってにます
送信側の変更が難しいため


さい  2004-12-13 19:25:37  No: 118089

いなさん、ねろさん、deさん
              有り難うございました
送信側の変更が難しいため
自分で分析して
やってにます
            有り難うございました


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加