service端的代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<stdlib.h>
4 #include<sys/socket.h>
5 #include<unistd.h>
6 #include<ctype.h>
7 #include<arpa/inet.h>
8 int main(void){
9 int lfd,cfd;//定义一个文件描述符,后一个是一个客户端的文件描述符
10 struct sockaddr_in serv_addr,clie_addr;//定义结构体,后一个是一个客户端
11 socklen_t clie_addr_len;//初始化一个文件的长度
12 lfd=socket(AF_INET,SOCK_STREAM,0);//设置该文件的文件描述符,设置为当前主机,当前的协议为tcp
13
14 serv_addr.sin_family=AF_INET;//连接的是当前主机的
15 serv_addr.sin_port=htons(52013);//设置服务器的端口号
16 serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);//设置为当前的ip
17
18 bind(lfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));//绑定ip和绑定port
19 listen(lfd,20);//设置允许的同时连接的数量
20 clie_addr_len=sizeof(clie_addr);//得到文件的最初的长度
21
22 cfd=accept(lfd,(struct sockaddr *)&clie_addr,&clie_addr_len);//得到客户端的信息
23 int n,i;//n表示读取的int返回指,i是计数器
24 char buff[BUFSIZ];//定义一个1024大小的字符串缓冲的数组
25
26 n=read(cfd,buff,sizeof(buff));//读取数据
27 for(i=0;i<n;i++){
28 buff[i]=toupper(buff[i]);
29 }//将小写转化为大写
30 write(cfd,buff,n);//写入数据
31 close(lfd);
32 close(cfd);
33 return 0;
34 }
client端下的代码:
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<unistd.h>
4 #include<sys/socket.h>
5 #include<arpa/inet.h>
6 #include<string.h>
7 int main(void){
8 int cfd;//本地的套接字
9 struct sockaddr_in serv_addr;//存ip和端口号
10
11 cfd=socket(AF_INET,SOCK_STREAM,0);//创建套接字
12
13 serv_addr.sin_family=AF_INET;//传输的类型
14 serv_addr.sin_port=htons(52013);//端口号
15 inet_pton(AF_INET,"127.0.0.1",&serv_addr.sin_addr.s_addr);//ip
16
17 connect(cfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr));//得到连接
18 char buff[BUFSIZ];//缓冲的数组
19 fgets(buff,sizeof(buff),stdin);//从输入的读数据
20 write(cfd,buff,strlen(buff));//写数据
21 int n;
22 n=read(cfd,buff,sizeof(buff));//读数据
23 write(STDOUT_FILENO,buff,n);//写到屏幕上
24 close(cfd);//关闭
25
26 return 0;
27 }