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

  • 相关阅读:
    检查两个单链表是否有交点
    检查链表中是否有环
    [转]根据二叉树的先序、中序遍历结果重建二叉树
    背包问题
    硬币问题
    部分和问题
    斐波那契计算
    最大公因数和最小共倍数
    计算一年中的第几天
    利用递归反向输出字符串
  • 原文地址:https://www.cnblogs.com/cplover/p/3371967.html
Copyright © 2011-2022 走看看