zoukankan      html  css  js  c++  java
  • Linux 基本网络编程

    基本套接字分为客户机/服务器和点对点模式。

    C/S:sever/client---------------------------一般采用TCP

    B/S:browser/server-----------------------一般采用UDP

    常用的数据结构有in_addr(存储IP地址),sockaddr_in(表示Internet协议地址结构),sockaddr(存储主机IP地址和接口信息)。

    struct in_addr{
        union{
            struct{u_char, s_b1, s_b2, s_b3, s_b4} s_un_b;
            struct{u_short s_w1, s_s2;} s_un_w;
            u_long s_addr;
      } s_un;
    }
    struct sockaddr_in{
        short sin_family;                //AF_INET
        u_short sin_port;               //16位端口号
        struct in_addr sin_addr;   //32位IP地址
        char sin_zero[8];
    };        
    struct sockaddr{
        unsigned short sa_family;
        char sa_data[14];
    };

    例子:

    in_addr test;
    test..s_un_b.s_b1=192;
    test..s_un_b.s_b2=168;
    test..s_un_b.s_b3=0;
    test..s_un_b.s_b4=1;
    struct sockaddr_in serverAddr;
    memst(&serverAddr,0,sizeof(struct sockaddr_in));
    serverAddr.sin_family=AF_INET;                          //AF_INET表示TCP
    serverAddr.sin_port=htons(80);
    serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);           //INADDR_ANY表示当前所用的IP

    常用函数

    #incldue<sys/socket.h>
    
    //创建套接字
    SOCKET PASCAL FAR socket(int af, int type, int protocol)
    //af指定通信协议--AF_UNIX,AF_INET,AF_NS
    //type指定套接字类型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP),SOCK_RAM(原始套接字)
    //protocol指定特定协议
    
    //套接字绑定
    int PASCAL FAR bind(SOCKET s, const struct sockaddr FAR *name, int namelen)
    //s指定要关联的套接字
    //name指定要绑定的IP地址与端口信息
    
    //侦听
    int PASCAL FAR listen(SOCKET s, int backlog)
    //backlog指定请求连接队列的最大长度,一般设为5
    
    //侦听,接受数据
    SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen)
    //s为当前指定的套接字
    //addr为保存当前客户端的地址信息
    
    //创建连接
    int PASCAL FAR connect(SOCKET s, const struct sockaddr FAR* name, int namelen)
    
    //TCP发送数据
    int PASACAL FAR send(SOCKET s, const char FAR* buf, int len, int flags);
    //s指定已经连接的套接字
    //buf表示待发送数据的缓冲区
    //flags用于设定发送控制参数,一般为0
    
    //TCP接受数据
    int PASACAL FAR recv(SOCKAET s,char FAR* buf,int len,int flags);
    
    //UDP发送数据
    ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
    ssize_t recvform(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *from, socklen_t fromlen) 
    //sockfd表示已经创建好的一个UDP套接字 
    //to.from用于设置接受方和发送方的地址信息 
    //tolen,fromlen用于设置地址信息的长度

    例子:

    TCP:

    UDP:

  • 相关阅读:
    GO 语言使用copy 拷贝切片的问题
    ggplot 局部放大
    R语言hist重叠图作法
    illumina SNP 芯片转基因型矩阵
    Shell 变量嵌套
    JVM指令
    VUE—CLI学习
    Gradle 项目打开自动下载Zip问题及相关配置
    MySQL8服务无法启动,服务没有报告任何错误
    SpringMVC相关
  • 原文地址:https://www.cnblogs.com/coder2012/p/2995827.html
Copyright © 2011-2022 走看看