Linuxベースのサーバとクライアント

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、0sizeof (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 }

 

おすすめ

転載: www.cnblogs.com/wisdomroc/p/11722963.html