📄 client1.c
字号:
#include <stdio.h> #include <unistd.h> #include <strings.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> /* netbd.h is needed for struct hostent */ #define PORT 1234 /* Open Port on Remote Host */ #define MAXDATASIZE 1024 /* Max number of bytes of data */ int main(int argc, char *argv[]) { int fd, numbytes; /* files descriptors */ char recvbuf[MAXDATASIZE]; /* buf will store received text */ char sendbuf[MAXDATASIZE]; char cliname[100]; struct hostent *he; /* structure that will get information about remote host */ struct sockaddr_in server; /* server's address information */ const char condition[]="quit\n"; if (argc !=2) { /* this is used because our program will need one argument (IP) */ printf("Usage: %s <IP Address>\n",argv[0]); exit(1); } if ((he=gethostbyname(argv[1]))==NULL){ /* calls gethostbyname() */ printf("gethostbyname() error\n"); exit(1); } if ((fd=socket(AF_INET, SOCK_STREAM, 0))==-1){ /* calls socket() */ printf("socket() error\n"); exit(1); } bzero(&server,sizeof(server)); server.sin_family = AF_INET; server.sin_port = htons(PORT); /* htons() is needed again */ server.sin_addr = *((struct in_addr *)he->h_addr); /*he->h_addr passes "*he"'s info to "h_addr" */ if(connect(fd, (struct sockaddr *)&server,sizeof(struct sockaddr))==-1){ /* calls connect() */ printf("connect() error\n"); exit(1); } printf("input your name:"); fgets(cliname,100,stdin); /* getchar();*/ if ((numbytes=send(fd,cliname,strlen(cliname),0)) == -1){ /* calls recv() */ printf("send() error\n"); exit(0); }while(1) { /*fflush(stdin);*/ bzero(&sendbuf,strlen(sendbuf)); printf("input message:"); fgets(sendbuf,MAXDATASIZE,stdin); /* getchar();*/ if(strcmp(sendbuf,condition)==0) { exit(1); } if ((numbytes=send(fd,sendbuf,strlen(sendbuf),0)) == -1){ /* calls recv() */ printf("send() error\n"); exit(1); } bzero(&recvbuf,sizeof(recvbuf)); if ((numbytes=recv(fd,recvbuf,MAXDATASIZE,0)) == -1){ /* calls recv() */ printf("recv() error\n"); exit(1); } recvbuf[numbytes]='\0'; printf("Server Message: %s\n",recvbuf);/*it prints server's welcome message */ } close(fd); /* close fd */ }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -