
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
本題じゃないけど, ある意味重要な話:
「構造体を送信する際、送信側で定義した構造体を
受信側でも定義する必要ありますか? 」
ということですが, 「ネットワークを流れるデータ」というのは本質的にただの「ビット列」でしかなく, それをどう解釈するかについては送受信するプログラムの都合で決まります. つまり, 上の質問に対する答えは
「受信側で構造体として扱わなければならないなら必要」
となります.
No.6
- 回答日時:
sendtoの話がいつの間にrecvfromに?
>nRtn = recvfrom(s,(char *)&recv,(int)sizeof(szBuf)-1,0,(SOCKADDR*)&client,&clientlen)
第2引数のrecvって、もしかして
>typedef struct recv {
このrecvですか?
もしそうなら構造体の定義と(構造体)変数の定義の区別がついていないので構造体や変数について勉強し直してください。
No.5
- 回答日時:
sendto の話なのか recvfrom の話なのかはっきりさせてほしい.
あと, そこで (char *)&recv として使っている recv の定義は?
No.4
- 回答日時:
>の[const void *msg] で"自分で定義した構造体"から"char *"への適切な変換関数が存在しません。
>となってしまうのですが、自分で定義した構造体はどのように指定するのが良いのでしょうか?
構造体の変数をどう定義して、どのように指定してるんですか。
また、なぜ、それを書かないのでしょうか。
この回答への補足
実験的に作った構造体なので
typedef struct recv {
char Name[32];
int Flag;
} RECV;
このような形で定義してます。
nRtn = recvfrom(s,(char *)&recv,(int)sizeof(szBuf)-1,0,(SOCKADDR*)&client,&clientlen);
No.3
- 回答日時:
構造体内の整数型などが、送受信双方でエンディアンが異なると正しく扱えない可能性があるので注意が必要です。
送信側がビッグエンディアンで、受信側がリトルエンディアンだった…とか。
>また一度にデータをまとめて送る方が良いか
>逐次データを送った方、どちらが効率が良いでしょうか?
データサイズ次第かと。
UDPで下位フレームでの分割が発生しないサイズなら一度に送信した方が手間がないかと。
# 複数受信するとか未着の可能性は残ったままですが。
この回答への補足
ssize_t sendto(int socket, const void *msg, size_t len, int flags,
const struct sockaddr *to, socklen_t tolen);
の[const void *msg] で"自分で定義した構造体"から"char *"への適切な変換関数が存在しません。
となってしまうのですが、自分で定義した構造体はどのように指定するのが良いのでしょうか?
No.2
- 回答日時:
> 構造体を送信する際、送信側で定義した構造体を
> 受信側でも定義する必要ありますか?
当然です。
また、構造体メンバにポインタがあると、受信しても意味ないので注意。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 会社・職場 私はせっかちでしょうか? 仕事で取引先に渡す為の上司にしか作れないデータを上司に依頼しているのですが 2 2022/08/19 05:52
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- その他(セキュリティ) eKYC(Povo、メルカリ、ヤフオクなど)に重大なリスクが含まれていませんか?大丈夫でしょうか? 2 2023/02/04 17:40
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- HTML・CSS GETをPOSTに変更したところ 送信 不能です。 1 2022/04/10 17:31
- 書類選考・エントリーシート 就活生です。企業に書類を送付するとき各種証明書をデータ形式でweb上で送るよう指示されたのですが、大 2 2023/04/07 11:24
- その他(データベース) 放送大学のデータベースの講義を、興味本位で見ていたら気になることがありました。 講師が、null を 5 2022/04/21 17:06
- Mac OS BluetoothスピーカをMac 2 2022/07/07 12:37
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
- その他(パソコン・スマホ・電化製品) スマホの本体に保存されてる写真をSDカードに移動したいのですが上手くできません。 AQUOS SH- 2 2022/08/14 22:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
列挙子(enumlator)の内容を文字...
-
FILE構造体がどのように定...
-
値が代入されてない時
-
構造体にする理由・利点・使用例
-
C++ 構造体の一括初期化 {0}
-
命名規則 VB 構造体
-
charで宣言した変数をstringへ...
-
long型のデータをバイト型の配...
-
マイコンのプログラム(C言語...
-
VBAの変数のデータ型を変更する...
-
Integer変数をカラにしたいので...
-
「#undef」と「#define」の使い...
-
VBAにてcolorindexを変数に格納...
-
構造体のデータを丸ごとコピー...
-
C言語 配列の長さの上限
-
関数から配列を返すには?
-
Run-Time Check Failure #3とい...
-
先頭アドレスとは何ですか?
-
C# DataGridView のヘッダーセ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのプログラムで、DIAG = 1# ...
-
Integer変数をカラにしたいので...
-
「#undef」と「#define」の使い...
-
C言語 構造体の中に共用体を定...
-
構造体のデータを丸ごとコピー...
-
VBAの変数のデータ型を変更する...
-
日付チェック関数について
-
整数から16進数への変換 現在c...
-
typedefをプログラム中で解除す...
-
値が代入されてない時
-
C++ 構造体の一括初期化 {0}
-
VBAで符号無し整数
-
変数の初期化について
-
long型のデータをバイト型の配...
-
1バイトデータの読み出しについて
-
charとucharの違い
-
VBAにてcolorindexを変数に格納...
-
異なる構造体のデータのコピー
-
構造体を型の異なる構造体に代入
-
構造体にする理由・利点・使用例
おすすめ情報