質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

22561閲覧

C言語環境Visual Studio #include <sys/socket.h>を読み込めない

kazuyakazuya

総合スコア193

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/08/27 08:56

C言語でソケットサーバープログラムを組んだのですが(動くかは分からない)

c

1#include <stdio.h> 2#include <sys/types.h> 3#include <stdio.h> 4#include <sys/types.h> 5#include <sys/socket.h> 6#include <netinet/in.h> 7 8int main(void) { 9  int rsock, wsock; 10 int len; 11 int ret; 12 //ソケット作成 13 rsock = socket(AF_INET, SOCK_STREAM, 0); 14 //構造体設定 15 struct sockaddr_in addr, client; 16 addr.sin_family = AF_INET; 17 addr.sin_port = htons(58000); 18 addr.sin_addr.s_addr = INADDR_ANY; 19 //ソケットにアドレスを与える 20 ret = bind(rsock, (struct sockaddr*) & addr, sizeof(addr)); 21 listen(rsock, 30) 22 len = sizeof(client); 23 //接続を受け付ける 24 wsock = accept(rsock, (struct sockaddr*) & client, &len); 25 //クライアントに送る 26 write("Hello World"); 27 //ソケットを閉じる 28 close(wsock); 29 close(rsock); 30 return 0; 31}

実行してもエラーになります。
イメージ説明
ソースファイル自体が読み込めないと書いてあったので以下のようにして実行すると・・・

c

1#include <stdio.h> 2#include <sys/types.h> 3#include <stdio.h> 4#include <sys/types.h> 5#include <sys/socket.h> 6#include <netinet/in.h> 7 8int main(void) { 9 return 0; 10}

イメージ説明

これを見る限り
自分の環境(Visual Studio)自体に問題があるのでしょうか?
(そもそも前提自体に誤りがあるかもしれません)
イメージ説明
C言語とC++とC#はそれぞれ別の言語のはずですよね?
C言語環境構築 Visual Studio
C言語の環境構築の記事には(見た限り全部)
C++を選択してください・・・と書いてあります。
(C++かC#の選択しかない Cがない)
それでC++を選んでいるのですが
これが原因なのでしょうか?

だとしたらVisual StudioでC言語のコードは実行できないということなのでしょうか?
(なんか前提から崩れている・・・)

分からないので参考になるリンクまたは説明をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Visual C++で書くのでしたら、この辺を参考にしてみてはどうでしょうか。
https://www.katto.comm.waseda.ac.jp/~katto/Class/10/GazoTokuron/code/socket.html

投稿2019/08/27 09:03

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuyakazuya

2019/08/27 09:08

ありがとうございます。
guest

0

Microsoft C(VisualStudioのC)では、ソケットはWinsock2というライブラリを使用していて、ヘッダや関数名などもunix系のソケットとは違っていたりすることもあります。Windows用の資料を参考にすることをお薦めします。

余談ですが、先のコンパイラインタプリタの話じゃないですけど、Cプログラムでの「実行」とはコンパイルに成功して出来たファイルによって、プログラムに書かれた内容を実行することをいいます。
コンパイルすることは実行とはいいませんので、言葉は使い分けた方がよろしいかと思います。

投稿2019/08/27 09:02

thkana

総合スコア7639

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuyakazuya

2019/08/27 09:08

ありがとうございます。 ファイルが実行できない・・・× コンパイルできなかった・・・〇 でした・・・。次から意識します。
guest

0

ベストアンサー

(そもそも前提自体に誤りがあるかもしれません)

はい、sys/socket.hUnix系のOSに存在するヘッダファイルなので、Windows環境には存在しません。

選択肢は2つです。

  • Winsock(Windows用のソケット実装)を使う形に書き直す
  • Unix系の環境を何かしらの形(Cygwin、仮想マシン、WSLなど)で再現して、その上で動かす

投稿2019/08/27 09:00

編集2019/08/27 09:03
maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazuyakazuya

2019/08/27 09:07

ありがとうございます。 winsockを使うのも今更感があるので バーチャルボックスで仮想環境を建てようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問