linux下的socket基础编程

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 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值