私は構造体を持っています:
typedef struct {
char *typ;
cid_t cid;
unsigned short nbytes;
char *data;
} req_s;
typedef struct {
char *ip;
unsigned short pid;
} cid_t;
そして、私はそれをTCPソケットを介して送信したいと思います。それは可能ですか?私はそれをやった:
req_s answer;
...
if( send(sock, (void*)&answer, sizeof(answer),0) < 0 ) {
printf("send failed!\n");
}
...
recv ( socketDesc, (void*)&answer, sizeof(answer), 0) >= 0)
しかし、私が私の構造式の回答を読みたい場合は、いくつかの象形文字しか取得しません
または、クライアントからサーバーにデータを送信して戻すためのより良い方法はありますか?
ここを参照してください: Cのソケットを介して構造体を渡す 。ただし、あなたのケースでは、構造体の内部にポインタを追加しているため、contents宛先バッファへのこれらのポインタも。
ネットワーク接続を介してポインターを送信することは、ポインターが指すデータがコピーされないため、通常は機能しません。たとえ別のメモリーアドレスにある場合でも、コピーされません。ネットワーク接続を介して送信するには、構造体をシリアル化する必要があります。