※ ChatGPTを利用し、要約された質問です(原文:エラーについて)
C++ネットワークプログラミングでのエラーに悩まされています
このQ&Aのポイント
ネットワークプログラミングをC++で行っている中で、特定のエラーに悩まされています。エラーの内容や出ている行について詳細に説明しました。
自分で書いたプログラムに対し、サンプルと同じように動かそうとしているのにエラーが出ています。
エラーの意味がわからず、解決策についてのご教授をお願いしたいです。
ネットワークプログラミングを作っているのですが、
今までほとんど扱ったことのないC++を使っていて
下記のエラーに悩まされています。
******************************
i:\program\client\client.cpp(168): error C2228: '.sin_family' : 左側がクラス、構造体、共用体ではありません。
i:\program\client\client.cpp(169): error C2228: '.sin_port' : 左側がクラス、構造体、共用体ではありません。
型は 'int' です。
i:\program\client\client.cpp(170): error C2228: '.sin_addr' : 左側がクラス、構造体、共用体ではありません。
型は 'int' です。
i:\program\client\client.cpp(170): error C2228: '.S_un' : 左側がクラス、構造体、共用体ではありません。
i:\program\client\client.cpp(170): error C2228: '.S_addr' : 左側がクラス、構造体、共用体ではありません。
******************************
エラーの出ている行は
******************************
memset(&saddr, 0, sizeof(SOCKADDR_IN));
saddr.sin_family = lpHost->h_addrtype;
saddr.sin_port = htons(uport);
saddr.sin_addr.s_addr = *((u_long*)lpHost->h_addr);
******************************
という部分になります。
手元のサンプルも全く同じに書いてあるのですがエラーは出ず、
ほぼ同じように自分の手で打ったプログラムにはエラーが出ています。
エラーそのものの意味も実はよくわかっていない状態なので、
ご教授願えたら、と思います。
お礼
saddrの宣言のところでミスをしていました。 普段の癖で","を余分に打っていて、それに気づいていなかったようで…。 宣言は大丈夫、という先入観も相まって見落としていました。 こんな初歩的な問題にご回答くださり、ありがとうございました。