zoukankan      html  css  js  c++  java
  • 基于Linux的服务器和客户端

    server.c

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 #include <unistd.h>
     5 #include <arpa/inet.h>
     6 #include <sys/socket.h>
     7 
     8 void error_handing(char *message);
     9 
    10 int main(int argc, char *argv[])
    11 {
    12     int serv_sock;
    13     int clnt_sock;
    14 
    15     struct sockaddr_in serv_addr;
    16     struct sockaddr_in clnt_addr;
    17     socklen_t clnt_addr_size;
    18 
    19     char message[] = "Hello World!";
    20 
    21     if(argc != 2)
    22     {
    23         printf("Usage : %s <port>
    ", argv[0]);
    24         exit(1);
    25     }
    26 
    27     serv_sock = socket(PF_INET, SOCK_STREAM, 0);
    28     if(serv_sock == -1)
    29         error_handing("socket() error");
    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     if(bind(serv_sock, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) == -1)
    37         error_handing("bind() error");
    38 
    39     if(listen(serv_sock, 5) == -1)
    40         error_handing("listen() error");
    41 
    42     clnt_addr_size = sizeof(clnt_addr);
    43     clnt_sock = accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_addr_size);
    44     if(clnt_sock == -1)
    45         error_handing("accept() error");
    46 
    47     write(clnt_sock, message, sizeof(message));
    48     close(clnt_sock);
    49     close(serv_sock);
    50     return 0;
    51 }
    52 
    53 void error_handing(char *message)
    54 {
    55     fputs(message, stderr);
    56     fputc('
    ', stderr);
    57     exit(1);
    58 }

    client.c

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 #include <unistd.h>
     5 #include <arpa/inet.h>
     6 #include <sys/socket.h>
     7 void error_handing(char *message);
     8 
     9 int main(int argc, char *argv[])
    10 {
    11     int sock;
    12     struct sockaddr_in serv_addr;
    13     char message[30];
    14     int str_len;
    15 
    16     if(argc != 3)
    17     {
    18         printf("Usage : %s <IP> <port>
    ", argv[0]);
    19         exit(1);
    20     }
    21 
    22     sock = socket(PF_INET, SOCK_STREAM, 0);
    23     if(sock ==-1)
    24         error_handing("socket() error");
    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     if(connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)
    32         error_handing("connect() error");
    33 
    34     str_len = read(sock, message, sizeof(message) - 1);
    35     if(str_len == -1)
    36         error_handing("read() error");
    37     printf("Message from server : %s 
    ", message);
    38     close(sock);
    39     return 0;
    40 }
    41 
    42 void error_handing(char *message)
    43 {
    44     fputs(message, stderr);
    45     fputc('
    ', stderr);
    46     exit(1);
    47 }
  • 相关阅读:
    BestCoder Round #84
    codeforces#689BMike and Shortcuts
    POJ2985 并查集+线段树 求第k大的数
    Trie树模板 POJ1056
    新建zabbix数据库
    python输出菱形
    wmi获取计算机信息
    python测试IP地址是否ping通
    手机安装python环境
    Centos 8 安装zabbix 爬坑
  • 原文地址:https://www.cnblogs.com/wisdomroc/p/11722963.html
Copyright © 2011-2022 走看看