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服务器是迭代的
getsockname和getpeername函数的更多相关文章
- UNIX网络编程——getsockname和getpeername函数
		UNIX网络编程--getsockname和getpeername函数 来源:网络转载 http://www.educity.cn/linux/1241293.html 这两个函数或者 ... 
- 关于getsockname()/getpeername()函数第一次被调用得到0.0.0.0结果的说明
		最近阅读UNIX网络编程第四章时,书本末尾介绍了两个函数getsockname()和getpeername(),可以用于获取服务器端和客户端的IP地址与端口,原本很简单的两个函数,过一眼即明白函数的用 ... 
- 关于 getsockname、getpeername和gethostname、gethostbyname
		一.gethostname,gethostbyname的用法 这两个函数可以用来获取主机的信息.gethostname:获取主机的名字gethostbyname:通过名字获取其他的信息(比如ip) 1 ... 
- Socket层实现系列 — getsockname()和getpeername()的实现
		本文主要介绍了getsockname()和getpeername()的内核实现. 内核版本:3.6 Author:zhangskd @ csdn blog 应用层 int getsockname(in ... 
- 利用 getsockname  和 getpeername 来获取某一个链接的本地地址和远端地址
		在两台计算机上建立一个网络连接,需要五个要素:本机地址 本机端口 协议类型 远端端口 远端地址.那么如何从一个建立好的连接上获取这些信息呢.就需要用到 getsockname 和 getpeerna ... 
- UNIX网络编程学习(9)--getsockname和getpeername的用法及实例(转)
		getsockname和getpeername #include <sys/socket.h>int getsockname(int sockfd, struct sockaddr *lo ... 
- getsockname()/getpeername()函数第一次被调用得到0.0.0.0结果
		int getsockname(int sockfd, struct sockaddr *addr, socklen_t *addrlen); getsockname() returns the cu ... 
- getsockname()和getpeername()
		对于server端: 以端口为通配符方式bind:对于服务器,bind(0,ip),则调用bind函数之后,就可以调用getsockname获取服务器得到的本地端口号 以ip地址为通配地址bind,只 ... 
- getsockname和getpeername
		int getsockname(int sockfd, struct sockaddr *localaddr, socklen_t *addrlen); // 获取与某个套接字关联的本地协议地址 i ... 
随机推荐
- UVALive 7148 LRIP 14年上海区域赛K题 树分治
			题意 n个点组成一棵树, 带有点权. 求最长不降的路径的长度, 且路径上最大值最小值之差不超过D. 显然是树分治, 但是分治之后如何维护答案呢. 假设当前重心为g, 分别记录g出发不降路径的长度,以及 ... 
- C语言判断系统数据大/小端存储方式
			小端存储:数据的低位部分,存储于存储器的低地址空间里. 大端存储:数据的低位部分,存储于存储器的高地址空间里. 首先,一般PC数据存储方式是小端存储. 基本实现思想是:将存储器中所存的数据按字节以地址 ... 
- 禁止执行某些讨厌的程序,如tadb.exe
			第一步:首先通过快捷键"Win+R"来打开"执行"菜单. 第二步:输入"gpedit.msc"回车确认,进入我们电脑中的组策略编辑器. 第三 ... 
- HTML5新特性之Canvas+drag(拖拽图像实现图像反转)
			1.什么是canvas 在网页上使用canvas元素时,会创建一块矩形区域,默认矩形区域宽度300px,高度150px.. 页面中加入canvas元素后,可以通过javascript自由控制.可以在其 ... 
- UML中的图
			用例图.类图.包图.顺序图.协作图.状态图.活动图.构件图.部署图等 1.用例图 显示多个外部参与者以及他们与系统提供的用例之间的连接.用例是系统中的一个可以描述参与者与系统之间交互作用功能单元.用例 ... 
- Java Math 类中的新功能--浮点数
			Java™语言规范第 5 版向 java.lang.Math和 java.lang.StrictMath添加了 10 种新方法,Java 6 又添加了 10 种.这个共两部分的系列文章的 第 1 部分 ... 
- cocos2d疑问
			1. pushScene后,如果才能保持前一个Scene的所有动作,比如schedule 2. APP进入到背景模式运行时,如何让它仍然做一些工作? 
- 【原创】贴片电容的测量方法。。。这是我从自己QQ空间转过来的,本人实操!
			电容不工作一般分为3种情况,漏电.击穿.无电容.一般检测用万用表检测阻值一般调在10K-20K为测量标准,特别是贴片电容.把万用表的笔尖点在贴片电容的两侧,如下图测量: l1.jpg l2.jpg l ... 
- SpringMVC11文件上传
			<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ... 
- 自己编写SqlHelper
			using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ... 
