Winsockでの文字列送信について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
shiro4ao
記事: 224
登録日時: 14年前
住所: 広島

Winsockでの文字列送信について

#1

投稿記事 by shiro4ao » 14年前

Winsockで通信するプログラムを書いています。
送信する際に、

コード:

send(sock,"\x04\x01\x1a\x0a\x7f\x00\x00\x01\x4d\x4f\x5a\x00",100,0);
とかいて送信するとうまく通信できるのですが、

コード:

char packet[100] hp1[5],hp2[5],n1[5],n2[5],n3[5],n4[5]; 
	strcpy(hp1,"1a");
	strcpy(hp2,"0a");
	strcpy(n1,"7f");
	strcpy(n2,"00");
	strcpy(n3,"00");
	strcpy(n4,"01");

        sprintf(packet,"\x04\x01\%s\x%s\x%s\x%s\x%s\x%s\x4d\x4f\x5a\x00",hp1,hp2,n1,n2,n3,n4);

        send(sock,packet,20,0);
とすると、うまく通信できなくなります

\xの意味が直接打ち込む時と、バッファに書いてある時とで違っているような気がします。
どのようにすれば、下のコードでも同じパケットを作れるようになりますか?
ご回答いただければ幸いです。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: Winsockでの文字列送信について

#2

投稿記事 by みけCAT » 14年前

こんな感じでしょうか?

コード:

char packet[100] hp1,hp2,n1,n2,n3,n4; 
    hp1=0x1a;
    hp2=0x0a;
    n1=0x7f;
    n2=0x00;
    n3=0x00;
    n4=0x01;
 
        sprintf(packet,"\x04\x01\%c\%c\%c\%c\%c\%c\x4d\x4f\x5a\x00",hp1,hp2,n1,n2,n3,n4);
 
        send(sock,packet,20,0);
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
shiro4ao
記事: 224
登録日時: 14年前
住所: 広島

Re: Winsockでの文字列送信について

#3

投稿記事 by shiro4ao » 14年前

数値の16進数への変換方法がわからなかったのですが、
strtol関数を使うことで解決できました。

残りの部分はみけCATさんのコードでうまくいきました。
これにて解決とさせて頂きます。
ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る