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本地端口信息

  • 相关阅读:
    sparql学习sparql示例、dbpedia在线验证
    中国绿卡
    逾期率的水有多深,你知道吗?
    ICO和区块链区别
    What are the benefits to using anonymous functions instead of named functions for callbacks and parameters in JavaScript event code?
    Link static data in sql source control
    sql data compare
    viewbag
    多态的实际使用
    win10 sedlauncher.exe占用cpu处理
  • 原文地址:https://www.cnblogs.com/cplover/p/3371967.html
Copyright © 2011-2022 走看看