📄 tcpclient.c
字号:
/*客户每次用一个随机的端口连接服务器,并接收来自服务器的欢迎信息,然后打印出来(tcpclient).运行的时候接受一个参数,也就是服务器的ip地址*//* Tcp client program, It is a simple example only. * zhengsh 200520602061 2 * connect to server, and echo a message from server. */#include <stdio.h>#include <sys/socket.h>#include <unistd.h>#include <sys/types.h>#include <netinet/in.h>#include <stdlib.h>#define SERVER_PORT 20000 // define the defualt connect port id#define CLIENT_PORT ((20001+rand())%65536) // define the defualt client port as a random port#define BUFFER_SIZE 255#define REUQEST_MESSAGE "welcome to connect the server.\n"void usage(char *name){ printf("usage: %s IpAddr\n",name);}int main(int argc, char **argv){ int servfd,clifd,length = 0; struct sockaddr_in servaddr,cliaddr; socklen_t socklen = sizeof(servaddr); char buf[BUFFER_SIZE]; if (argc < 2) { usage(argv[0]); exit(1); } if ((clifd = socket(AF_INET,SOCK_STREAM,0)) < 0) { printf("create socket error!\n"); exit(1); } srand(time(NULL));//initialize random generator bzero(&cliaddr,sizeof(cliaddr)); cliaddr.sin_family = AF_INET; cliaddr.sin_port = htons(CLIENT_PORT); cliaddr.sin_addr.s_addr = htons(INADDR_ANY); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; inet_aton(argv[1],&servaddr.sin_addr); servaddr.sin_port = htons(SERVER_PORT); //servaddr.sin_addr.s_addr = htons(INADDR_ANY); if (bind(clifd,(struct sockaddr*)&cliaddr,sizeof(cliaddr))<0) { printf("bind to port %d failure!\n",CLIENT_PORT); exit(1); } if (connect(clifd,(struct sockaddr*)&servaddr, socklen) < 0) { printf("can't connect to %s!\n",argv[1]); exit(1); } length = recv(clifd,buf,BUFFER_SIZE,0); if (length < 0) { printf("error comes when recieve data from server %s!",argv[1]); exit(1); } printf("from server %s :\n\t%s ",argv[1],buf); close(clifd); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -