• getsockname和getpeername函数


    这2个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址(getpeername)

    int getsockname(int sockfd, struct sockaddr* localaddr, socklen_t * addrlen);

    int getpeername(int sockfd, struct sockaddr * peeraddr, socklen_t * addrlen);

    这2个函数的最后一个参数都是值-结果参数,这就是说,这2个函数都得装填由localaddr和peeraddr指针所指的套接字地址结构

    需要这2个函数的理由:

    1)在一个没有调用bind的TCP客户上,connect成功返回后,getsockname用于返回由内核赋予该连接的本地IP地址和本地端口号

    2)在以端口号0调用bind后,getsockname用于返回内核赋予的本地端口号

    3)getsockname可用于获取某个套接字的地址簇

    4)在一个以通配IP地址调用bind的服务器上,与某个客户的连接一旦建立,getsockname就可以用于返回由内核赋予该连接的本地IP地址

    在这样的调用中,套接字描述符参数必须是已连接的本地IP,而不是监听套接字的描述符

    5)当一个服务器是由调用accept的某个进程通过调用exec执行程序时,它能够获取客户身份的唯一途径就是调用getpeername

    所有客户和服务器都是从调用socket开始,它返回一个套接字描述符

    客户随后调用connect

    服务器则调用bind、listen、accept

    套接字通常使用标准的close函数关闭

    大多数TCP服务器都是并发的

    它们为每个待处理的客户连接调用fork派生一个子进程

    大多数UDP服务器是迭代的

    ========================if i have some wrong, please give me a message, thx.========================
  • 相关阅读:
    OGG for sqlserver engryption && insert/delete
    MySQL中SQL_CALC_FOUND_ROWS的用法
    VMWARE 虚拟机新增硬盘,格式化分区,并挂载
    Mycat实战之数据迁移(oracle -- mysql)
    MYCAT实战之分片迁移
    mycat实战之性能测试
    Mycat实战之主键数据库自增方式
    对象的创建与克隆
    c#调用c++的dll,错误篇
    java 模拟消息的发送功能
  • 原文地址:https://www.cnblogs.com/ailx10/p/5350545.html
Copyright © 2020-2023  润新知