server.c
1の#include <stdio.hの> 2の#include <STDLIB.H> 3の#include < 文字列・H> 4の#include <unistd.h> 5の#include <ARPA / inet.h> 6の#include <SYS /ソケット。 H> 7 8 空隙 error_handing(チャー *のメッセージ)。 9 10 INTメイン(int型 ARGC、CHAR * ARGV []) 11 { 12 のint serv_sock。 13 int型clnt_sock。 14 15 構造体のsockaddr_in serv_addr。 16 構造体のsockaddr_in clnt_addr。 17 のsocklen_t clnt_addr_size。 18 19 文字のメッセージ[] = " Hello Worldの!" 。 20 21 であれば(!ARGC = 2 ) 22 { 23 のprintf(" 使用法:%S <ポート>の\ n "、ARGV [ 0 ])。 24 出口(1 )。 25 } 26 27 serv_sock =ソケット(PF_INET、SOCK_STREAM、0 ); 28 であれば(serv_sock == - 1 ) 29 error_handing(" ソケット()エラー" )。 30 31 のmemset(&serv_addr、0、はsizeof (serv_addr))。 32 serv_addr.sin_family = AF_INET。 33 serv_addr.sin_addr.s_addr = htonl(INADDR_ANY)。 34 serv_addr.sin_port = htons(ATOI(ARGV [ 1 ]))。 35 36 であれば(バインド(serv_sock、(構造体のsockaddr *)&serv_addr、はsizeof(serv_addr))== - 1 ) 37 error_handing(" バインド()エラー"); 38 39 もし((serv_sock、聞く5)== - 1 ) 40 error_handing(" 聞く()エラー" )。 41 42 clnt_addr_sizeの=のはsizeof (clnt_addr)。 43 clnt_sock =(serv_sock、(受け入れる構造体のsockaddr *)&clnt_addr、&clnt_addr_size)を、 44 であれば(clnt_sock == - 1 ) 45 error_handing(" 受け入れる()エラー" )。 46 47 ライト(clnt_sock、メッセージはsizeof(メッセージ)); 48 近い(clnt_sock)。 49 近い(serv_sock)。 50 リターン 0 ; 51 } 52 53 空隙 error_handing(チャー *のメッセージ) 54 { 55 fputs(メッセージ、標準エラー出力)。 56 FPUTC(' の\ n ' 、標準エラー出力)。 57 出口(1 )。 58 }
client.cを
1の#include <stdio.hの> 2の#include <STDLIB.H> 3の#include < 文字列・H> 4の#include <unistd.h> 5の#include <ARPA / inet.h> 6の#include <SYS /ソケット。 H> 7 空隙 error_handing(チャー *のメッセージ)。 8 9 INTメイン(int型 ARGC、チャー *のARGV []) 10 { 11 int型の靴下。 12 構造体のsockaddr_in serv_addr。 13 チャーメッセージ[ 30 ]。 14 int型str_len; 15 16 であれば(!ARGC = 3 ) 17 { 18 のprintf(" 使用法:%sの<IP> <ポート>の\ n "、ARGV [ 0 ])。 19 出口(1 )。 20 } 21 22 靴下=ソケット(PF_INET、SOCK_STREAM、0 ); 23 であれば(靴下== - 1 ) 24 error_handing(" ソケット()エラー" )。 25 26 のmemset(&serv_addr、0、sizeof (serv_addr))。 27 serv_addr.sin_family = AF_INET。 28 serv_addr.sin_addr.s_addr =のinet_addr(ARGV [ 1 ])。 29 serv_addr.sin_port = htons(ATOI(ARGV [ 2 ]))。 30 31 もし((靴下、(接続構造体のsockaddr *)&serv_addr、はsizeof(serv_addr))== - 1 ) 32 error_handing(" 接続()エラー" )。 33 34 str_len =リード(靴下、メッセージはsizeof(メッセージ) - 1 )。 35 もし(str_len == - 1 ) 36 error_handing(" (読み取り)エラー" )。 37 のprintf(" サーバからのメッセージ:%Sの\ n " 、メッセージ)。 38 近い(靴下) 39 リターン 0 ; 40 } 41 42 空隙 error_handing(チャー *のメッセージ) 43 { 44 fputs(メッセージ、標準エラー出力)。 45 FPUTC(' の\ n ' 、標準エラー出力)。 46 出口(1 )。 47 }