⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 网络通信编程
💻 C
字号:
/* ============================================================================ Name        : client.c Author      : maduohe Version     : Copyright   : Your copyright notice Description : Hello World in C, Ansi-style ============================================================================ */#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netdb.h>#include <unistd.h>#include <netinet/in.h>#include <string.h>#define MAXSIZE 80#define MYPORT 3490 void str_cli(FILE *, int);int main(int argc, char **argv)  {    int sockfd, ret, len;    struct sockaddr_in ser_addr;    char *myname;    struct hostent *sh;    struct in_addr **addrs;    if (argc !=2)      {        printf("parameters not match.");        exit(0);      }    //获取服务器名称    if ((sh = gethostbyname(argv[1]))== NULL)      {        printf("parameters not match");        exit(0);      }    //根据服务器名称获取详细信息    addrs = (struct in_addr **)sh->h_addr_list;    //尝试与服务器的各个地址连接,知道连接上其中一个为止    for (; *addrs!=NULL; addrs++)      {        sockfd = socket(AF_INET, SOCK_STREAM, 0);        if (sockfd<0)          {            printf("error in socket");            exit(1);          }        //创建套接口        ser_addr.sin_family = AF_INET;        ser_addr.sin_port = htons(MYPORT);        memcpy(&(ser_addr.sin_addr), *addrs, sizeof(struct in_addr));        bzero(&(ser_addr.sin_zero), 8);        ret = connect(sockfd,(struct sockaddr *)&ser_addr, sizeof(struct sockaddr));        if (ret == 0)          {            break;          }        else//连接成功则跳出循环          {            printf("error connecting.");            close(sockfd);          }      }    //连接不成功则报错并退出    if (*addrs == NULL)      {        printf("can't get connected with server");        exit(0);      }    //数据传输操作    str_cli(stdin, sockfd);    //操作结束,关闭socket    close(sockfd);    exit(0);  }void str_cli(FILE *fp, int sockfd)  {    char sends[MAXSIZE], recvs[MAXSIZE];    int n = 0;    while (fgets(sends, MAXSIZE, fp)!= NULL)      {        send(sockfd, sends, strlen(sends), 0);        if ((n = recv(sockfd, recvs, MAXSIZE, 0)) == 0)          {               printf("error receiving data.");               exit(1);          }        recvs[n]= 0;        fputs(recvs,stdout);      }  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -