zoukankan      html  css  js  c++  java
  • 套接字(Windows)

    套接字

    操作系统管理的进程的套接字表,每一个进程拥有一张套接字表

    套接字有两种一种是被动套接字(作为Server时),一种是活动套接字(作为Client时)。

    TCP/IP 协议族 常量 PF_INET =2 

    TCP/IP 地址族 常量 AF_INET =2 

    套接字端点地址一般数据结构

    struct sockaddr{ //一般结构定义

        u_short sa_family; //地址族

        char sa_data[14]; //地址

    };

    套接字端点地址的精确数据结构定义

    struct sockaddr_in{

        u_short sin_family; //地址类型,值一直都是AF_INET

        u_short sin_port; //端口号

        struct in_addr sin_addr; //IP地址

        char sin_zero[8]; //没用的,常为0

    };

    只是使用了TCP/IP协议的程序只需要使用sockaddr_in结构,sockaddr结构只是用来强制类型转换通过编译器的编译。

    套接字函数

    WSAStartup

    使用套接字前必须调用的函数

    WSACleanup

    结束使用套接字关闭释放套接字的函数

    Socket

    创建一个套接字

    connect

    客户端调用此函数来和服务端连接

    send

    发送数据

    recv

    接收函数

    closesocket

    关闭套接字并释放,如果多个进程共享套接字,引用-1,当引用为0的时候释放套接字

    bind

    指定套接字的本地端点地址和端口

    listen

    Server用来监听传入连接,套接字被设定为被动模式

    accept

    获得连接,如果一直没有获得连接则一直阻塞

    套接字调用模式

    客户端:

    WSAStartup->socket->connect->send->recv->closesocket->WSACleanup

    服务端:

    WSAStartup->socket->bind->listen->accept->recv->send->closesocket->WSACleanup

    getsockname 得到socket本地端口信息

  • 相关阅读:
    python 中的深拷贝和浅拷贝
    时间复杂度
    为什么l1和l2可以防止过拟合
    逻辑回归实现多分类
    《深入浅出数据分析》读书笔记
    牛客网的输入和输出
    万物皆可embedding
    NLP中的mask的作用
    不同语言对单例模式的不同实现
    ElasticSearch 索引 VS MySQL 索引
  • 原文地址:https://www.cnblogs.com/cplover/p/3371967.html
Copyright © 2011-2022 走看看