- 服务端----其代码如下
#include <stdio.h> #include<stdlib.h> #include<sys/socket.h> #include<unistd.h> #define SERV_PORT 9898 #define SERV_IP "127.0.0.1" #include<ctype.h> #include<arpa/inet.h> int main() { int lfd,cfd,n,i; char buf[BUFSIZ]; struct sockaddr_in serv_addr,client_addr; socklen_t client_addr_len; lfd=socket(AF_INET,SOCK_STREAM,0);// serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(SERV_PORT); serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);// bind(lfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)); listen(lfd,128);//128 is uplimit client_addr_len=sizeof(client_addr); cfd=accept(lfd,(struct client_addr*)&client_addr,&client_addr_len);//will recv fd and return fd while(1) { n=read(cfd,buf,sizeof(buf)); for(i=0;i<n;i++) { buf[i]=toupper(buf[i]); } write(cfd,buf,n); } printf("Hello World! "); return 0; }
测试:打开一个终端输入 nc 127.0.0.1 9898
- 客户端
#include<stdio.h> #include<arpa/inet.h> #include<stdlib.h> #include<unistd.h> #include<sys/socket.h> #include<string.h> #define SERV_IP "127.0.0.1" #define SERV_PORT 9898 int main() { int cfd,n; char buf[BUFSIZ]; struct sockaddr_in serv_addr; socklen_t serv_addr_len; memset(&serv_addr,0,sizeof(serv_addr)); cfd=socket(AF_INET,SOCK_STREAM,0); serv_addr.sin_family=AF_INET; serv_addr.sin_port=SERV_PORT; inet_pton(AF_INET,SERV_IP,&serv_addr.sin_addr.s_addr); connect(cfd,(struct sockaddr_in *)&serv_addr,sizeof(serv_addr)); while(1) { fgets(buf,sizeof(buf),stdin);//gets is out-of-date;use fgets readline until the end, back with write(cfd,buf,strlen(buf)); n=read(cfd,buf,sizeof(buf)); write(STDOUT_FILENO,buf,n); } close(cfd); return 0; }