【網路程式設計】學習筆記--04 server端和client程式碼
阿新 • • 發佈:2021-11-11
Server端:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<errno.h> #include<pthread.h> #include<ctype.h> #include<sys/socket.h> #include<arpa/inet.h> #define SERV_PORT 9527 void sys_err(const char *str) { perror(str); exit(View Code1); } int main(int argc,char *argv[]) { int lfd = 0,cfd = 0; int ret,i; char buf[BUFSIZ],client_IP[BUFSIZ]; struct sockaddr_in serv_addr,clit_addr; socklen_t clit_addr_len; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(SERV_PORT); serv_addr.sin_addr.s_addr= htonl(INADDR_ANY); lfd = socket(AF_INET,SOCK_STREAM,0); if(lfd==-1){ sys_err("socket error"); } bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); listen(lfd,128); clit_addr_len = sizeof(clit_addr); cfd = accept(lfd,(struct sockaddr *)&clit_addr,&clit_addr_len);if(cfd==-1){ sys_err("accept error"); } printf("client ip:%s port:%d\n", inet_ntop(AF_INET, &clit_addr.sin_addr.s_addr,client_IP,sizeof(client_IP)), ntohs(clit_addr.sin_port)); while(1){ ret = read(cfd,buf,sizeof(buf)); write(STDOUT_FILENO,buf,ret); for(i=0;i<ret;i++) buf[i]=toupper(buf[i]); write(cfd,buf,ret); } close(lfd); close(cfd); return 0; }
Client端:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<sys/socket.h> #define SERV_PORT 9527 void sys_err(const char *str) { perror(str); exit(1); } int main(int argc,char *argv[]) { int cfd; int conter=10; char buf[BUFSIZ]; struct sockaddr_in serv_addr; serv_addr.sin_family = AF_INET; serv_addr.sin_port = htons(SERV_PORT); inet_pton(AF_INET,"127.0.0.1",&serv_addr.sin_addr.s_addr); cfd = socket(AF_INET,SOCK_STREAM,0); if(cfd==-1) sys_err("socket error"); int ret = connect(cfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)); if(ret!=0) sys_err("connect error"); while(conter--) { write(cfd,"hello\n",6); ret = read(cfd,buf,sizeof(buf)); write(STDOUT_FILENO,buf,ret); sleep(1); } close(cfd); return 0; }View Code
執行的時候,開2個視窗,一個視窗跑server端,./server即可,另一個跑client端,./client即可。注意要先編譯。
Codeforces ID:Anonytt QQ: 847399102 可以新增&關注