配列内に通番(文字列)を挿入したいのですが・・・(Winsock利用)
こんばんわ。
A端末(送信端末)→B端末(受信端末)というように、A端末から複数パケットを送信し、B端末でパケットを受信するというプログラムをUDPを用いて作成しています。
[実装したいこと]
・A端末において各パケットに対して、通番(TCPのシーケンス番号)のよ うなものを挿入し、パケットを送出。
・B端末で、どの通番を持つパケットを受信することができたか?を確 認したい。
と思っています。
そこで、上記をふまえ以下のようなプログラムを作成しました。
[A端末(送信側)]
//main
main(int argc ,char *argv[]){
UDPSending(s_port,szServer);
}
//whileループにてsend_packet関数を何回も呼び出す。packet_Num変数よりカウントアップ。
UDPSending(unsigned short s_port,char *szServer){
int packet_Num = 1;
while((n = fread(send_Buf,1,SEND_DATA_SIZE,fp)) != 0) {
send_packet(packet_Num, s_port, szServer, send_Buf, n);
packet_Num++;
}
}
//sprintf関数を使用し各パケットに通番を付加
send_packet(int packet_Num, unsigned short s_port, char *szServer, char *send_Buf, int n){
char send_Buff[1500];
//配列初期化
memset(send_Buff,'\0',sizeof(send_Buff));
//send_Bufに文字列を付加?
sprintf(send_Buf+32,"%d\n",packet_Num);
//send_Bufの内容をsend_Buffへコピー
memcpy(send_Buff,send_Buf,n);
UDPDataSend(s_port, szServer, send_Buff, n);
}
//パケット送出
UDPDataSend(unsigned short s_port, char *szServer, char *send_Buff, int n){
sendto(省略)
}
上記のように、sprintf関数を使用しpacket_Num変数の文字列を挿入することで、送出されるパケットに通番を割り振っていることになるのでしょうか?
よろしくお願い致します。
お礼
ありがとうございます。 自宅に「802.11高速無線LAN教科書」があるのを忘れて質問していました。 パケットキャプチャのプロトコルにRTS、CTSがあるということは、DCF(自律分散制御)。 パケットキャプチャのプロトコルにCF-Endがあるということは、CFP(ポーリング集中制御)。 つまり、同一無線セル上にDCF(自律分散制御)、CFP(ポーリング集中制御)が共存しているようです。 隠端末問題対策として、CFP(ポーリング集中制御)でCF-Endを受信した端末はCFPからDCFへ切り替えるため、CF-Endがあるようです。