• 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 }

  • 相关阅读:
    方法级别的抽象
    同事关系处理6个关键点
    面向对象(类与对象)
    初识面向对象
    Python模块学习
    解决ORA-21561: OID generation failed
    Python模块——PrettyTable 模块
    对于python setup.py install安装的包如何卸载
    git问题--Push rejected: Push to origin/master was rejected
    Scrapyd发布爬虫的工具
  • 原文地址:https://www.cnblogs.com/csnd/p/16675688.html
Copyright © 2020-2023  润新知