受信データを識別するには?

解決


なだそうそう  2003-12-20 20:27:40  No: 81047  IP: [192.*.*.*]

サーバ側から定価(int型)と商品番号(int型)を送信したときに、クライアント側でそれぞれの
データが定価か商品番号なのか識別して、それぞれの処理を行いたいです。
でも
dim intdata as interger
winsock.getdata  intdata
で、受信したデータがintdataに格納されるわけですが
intdataにあるデータが定価なのか商品番号なのかを見分ける方法を教えてもらえないでしょうか?

あるいは、定価や商品番号のそれぞれ専用の受信方法はないのでしょうか?つまり、  winsock.getdata intdata  のようにintdataにすべての受信データが格納されるのではなく、定価や商品番号によって別の変数に格納させる方法があれば教えてくださいませ。

編集 削除
(´∀` )  2003-12-21 22:51:04  No: 81048  IP: [192.*.*.*]

適当な文字を送信させて、文字を受け取り、その文字にあった処理をすればいいと思われ。

編集 削除
なだそうそう  2003-12-22 00:33:28  No: 81049  IP: [192.*.*.*]

ご返答ありがとうございます。
扱うデータが数字です。
文字を送れば確かに識別できるのですが、文字を処理するのではなく
数字を処理するので、数字をどうやって識別するか教えていただけないでしょうか?

編集 削除
レッド  2003-12-22 05:52:55  No: 81050  IP: [192.*.*.*]

サーバー側とクライアント側のどちらの処理を直すのでしょうか?

編集 削除
モミジ  2003-12-22 07:11:14  No: 81051  IP: [192.*.*.*]

プログラム上では無くて実生活で数字だけで定価と商品番号を
識別するにはどうしますか?  何か規則性が無くても出来ますか?
13  45  38  73  92  となった場合には
どれが 定価で、どれが商品番号ですか?  判別出来ますか? 
単に数字が送られて来ただけで識別出来ますか?  規則性が必要でしょう。

最初は必ず定価で次に商品番号と決まっているなら奇数番目は定価、
偶数番目が商品番号となります。これが順番も不動、で定価、定価で
次に商品番号が送信されてきたりするなら識別困難でしょう。
他に何か条件があれば別ですが、定価は必ず10000以上とか
商品番号は10000未満とか条件や決まりがありますか?  
送信時は必ず最初は定価で次に商品番号で、必ずセットで送信とか
まずは仕様をしっかり決めましょう。

レッドさんの云われる様に
「サーバー側とクライアント側のどちらの処理を直すのでしょうか?」

編集 削除
ねろ  2003-12-22 08:10:35  No: 81052  IP: [192.*.*.*]

このような重要なデーターを送るには、サーバーと、クライアント両方で、
それなりのプロトコールを決めておいた方がいいでしょう。
先ずデーターの始めと終わり、それとデーターの種類を決めます。
たとえばXML風に作ると。
<DATA>
    <商品番>1xxxx</商品番号>
    <定価>xxxx</定価>
    <商品番>2xxxxx</商品番号>
    <定価>xxx</定価>
    <商品番>3xxxxx</商品番号>
    <定価>xxxx</定価>
</DATA>
こんな風に、数字も全て文字列で送ります。
数字の部分だけでもサムチェックをつけておけば更に信頼度は上がります。

編集 削除
なだそうそう  2003-12-22 13:15:10  No: 81053  IP: [192.*.*.*]

クライアント側で処理をします。
送信する順番に規則性はないです。
数字の範囲も規則性はないです。
セットで送信するとは、どういうことでしょう?

本当は6種類のデータ(すべて数字)を送りたいのですが、
定価と商品番号の2種類の識別ができれば
それを応用したいと考えています。
また、構造体で
abc.teika、abc.shouhinbangou
というふうにサーバ側で決めているので、クライアント側でも同じ構造体を定義してabcとしてひとまとまりで
送ることはできないのでしょうか?

編集 削除
さんちょ  2003-12-22 14:23:57  No: 81054  IP: [192.*.*.*]

規則が無いなら、データの規則を決めないと判別する手段なんて実生活でもありえないでしょ?っとこれまでの回答者がもうしていますよ。
構造体で送りたいと、考えておられるならそれだけでも規則ですよね。
後は、何桁で送信するとか、肉付けしていけば、おのずと判別する手段も見えてくるはずです。

編集 削除
なだそうそう  2003-12-22 15:44:06  No: 81055  IP: [192.*.*.*]

みなさん、ご指摘ありがとうございました!
おかげで解決することができました。
string型の変数にデータ名とデータを一緒に入れて、
mid関数で文字を取り出し、数字データも取り出すことにしました。

本当は構造体で送りたいのですが、調べたところユーザ定義型の
構造体はプロパティも指定しないと送れないみたいです。
abcだけではなく
abc.teikaやabc.shouhinbangouまで書かないとダメみたいです。

みなさんありがとうございました。

編集 削除
ねろ  2003-12-22 16:56:46  No: 81056  IP: [192.*.*.*]

要するに文字列で送ることにしたということね。
こう言うのはタグ付けしといた方がいいんだけどな。。。。。

編集 削除
(´∀` )  2003-12-22 17:55:13  No: 81057  IP: [192.*.*.*]

確かにねろさんの言うとおり何かで囲っておいたほうがよいかと。

繰り返し送信されたら困りますしね。

編集 削除