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

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

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

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

ソケット

TCP/IPにおいて、IPアドレスとサブアドレスであるポート番号を組み合わせたネットワークアドレスのことを呼びます。また、ソフトウェアアプリケーションにおいて、TCP/IP通信を行う為の仮想的なインターフェースという意味もある。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

解決済

2回答

969閲覧

ソケットプログラムのエラーしょりについて(tcp クライアント)

masuter0413

総合スコア50

C

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

ソケット

TCP/IPにおいて、IPアドレスとサブアドレスであるポート番号を組み合わせたネットワークアドレスのことを呼びます。また、ソフトウェアアプリケーションにおいて、TCP/IP通信を行う為の仮想的なインターフェースという意味もある。

TCP

TCP(Transmission Control Protocol)とは、トランスポート層のプロトコルで、コネクション型のデータサービスです。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

0クリップ

投稿2019/06/17 06:59

ECHO サーバに、"hello" を送信し、返信された内容を標準出力に書き出すプログラムをつくりました。
エラーしょりはじゅうぶんにかけていますでしょうか。

c

1root@localhost:~ # vi kadai1-4_1.c 2#include <sys/types.h> 3#include <sys/socket.h> 4#include <netinet/in.h> 5#include <netdb.h> 6#include <stdio.h> 7#include <stdlib.h> 8#include <errno.h> 9#include <err.h> 10#include <unistd.h> 11#include <string.h> 12 13int main(){ 14 struct addrinfo hints, *res; 15 int l, s; 16 int error; 17 char buf[1024]; 18 19 memset(&hints, 0, sizeof(hints)); 20 hints.ai_socktype = SOCK_STREAM; 21 22 error=getaddrinfo("10.50.18.200","7",&hints, &res); 23 if(error!=0){ 24 errx(1,"%s",gai_strerror(error)); 25 } 26 while(res!=NULL){ 27 s = socket(res->ai_family, res->ai_socktype, res->ai_protocol); 28 if(s<0){ 29 res=res->ai_next; 30 } 31 else{ 32 break; 33 } 34 } 35 if(connect(s, res->ai_addr, res->ai_addrlen)<0){ 36 close(s); 37 } 38 snprintf(buf, sizeof(buf), "%s", "helo\n"); 39 write(s, buf, strlen(buf)+1); 40 while((l=read(s,buf,sizeof(buf)))>0){ 41 write(STDOUT_FILENO, buf, l); 42 } 43 close(s); 44} 45

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

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

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

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

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

mather

2019/06/17 07:28

どこまでエラー処理をすれば十分なのかは自分で決めてほしいのですが、具体的に何が聞きたいのでしょうか?
guest

回答2

0

ベストアンサー

2点指摘します。

1.最後までsocketの作成に失敗した場合は?
2.connetに失敗した時にsをcloseしているが
その後で、write/readで使用している

指摘以外も問題があるかもしれません。

参考URL

投稿2019/06/27 10:56

ai_2013_dev

総合スコア338

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

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

0

学校の課題とかなら、先生に出題意図を確認しないと「じゅうぶん」かどうかわかりません。質問してみましょう。

投稿2019/06/17 08:44

gentaro

総合スコア8949

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問