client.c

来自「用户数据报协议的程序源码」· C语言 代码 · 共 70 行

C
70
字号
#include <sys/types.h>#include <sys/socket.h>#include <string.h>#include <netinet/in.h>#include <stdio.h>#include <stdlib.h>#include <arpa/inet.h>#include <unistd.h> #define MAXLINE         80#define SERV_PORT       8888 void do_cli(FILE *fp, int sockfd, struct sockaddr *pservaddr, socklen_t servlen){        int n;        char sendline[MAXLINE], recvline[MAXLINE + 1];         /* connect to server */        if(connect(sockfd, (struct sockaddr *)pservaddr, servlen) == -1)        {                perror("connect error");                exit(1);        }         while(fgets(sendline, MAXLINE, fp) != NULL)        {                /* read a line and send to server */                write(sockfd, sendline, strlen(sendline));                /* receive data from server */                n = read(sockfd, recvline, MAXLINE);                if(n == -1)                {                        perror("read error");                        exit(1);                }                recvline[n] = 0;        /* terminate string */                fputs(recvline, stdout);        }} int main(int argc, char **argv){        int sockfd;        struct sockaddr_in servaddr;        /* check args */        if(argc != 2)        {                printf("usage: udpclient <IPaddress>\n");                exit(1);        }        /* init servaddr */        bzero(&servaddr, sizeof(servaddr));        servaddr.sin_family = AF_INET;        servaddr.sin_port = htons(SERV_PORT);        if(inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0)        {                printf("[%s] is not a valid IPaddress\n", argv[1]);                exit(1);        }         sockfd = socket(AF_INET, SOCK_DGRAM, 0);         do_cli(stdin, sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));         return 0;}

⌨️ 快捷键说明

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