- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通信函数
bind 函数
bind 函数用于将套接字绑定到一个已知的地址上。
语法:
int bind ( SOCKET s,const struct sockaddr FAR* name, int namelen);
参数说明:
s:是一个套接字。
name :是一个sockaddr 结构指针,该结构中包含了要结合的地址和端口号。
namelen :确定name 缓冲区的长度。
返回值:如果函数执行成功,返回值为0 ,否则为SOCKET_ERROR 。
在定义一个套接字后,需要调用bind 函数为其指定本机地址、协议和端口号。
下面的代码创建一个套接字s ,将其绑定到3010 端口上。
int port = 3010;
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP);
sockaddr_in addr;
addr.sin_family = AF_INET; // 内部网络协议TCP\UDP 等
addr.sin_port = htons(port); //端口号
addr.sin_addr.s_addr = htonl(INADDR_ANY);
if (SOCKET_ERROR = bind(s,(LPSOCKADDR)addr,sizeof(addr))==0)
{
MessageBox(失败!);
}
inet_ntop
Linux 下inet_pton 和inet_ntop 这2 个IP 地址转换函数,可以在将IP 地址在“点分十进制”
和“整数”之间转换。而且,这2 个函数能够处理ipv4 和ipv6 。算是比较新的函数了。
inet_pton 函数原型如下[将“点分十进制” - “整数”]
#include sys/types.h
#include sys/socket.h
#include arpa/inet.h
int inet_pton(int af, const char *src, void *dst);
这个函数转换字符串到网络地址,第一个参数af 是地址族,转换后存在dst 中。
inet_pton 是inet_addr 的扩展,支持的多地址族有下列:
af = AF_INET
src 为指向字符型的地址,即ASCII 的地址的首地址(ddd.ddd.ddd.ddd 格式的),函数
将该地址
转换为in_addr 的结构体,并复制在*dst 中。
af =AF_INET6
src 若为指向IPV6 的地址,函数将该地址转换为in6_addr 的结构体,并复制在*dst 中。
如果函数出错将返回一个负值,并将errno 设置为EAFNOSUPPORT ,如果参数af 指
定的地址族和src 格式不对,函数将返回0 。
inet_ntop 函数原型如下[将“整数” - “点分十进制”]
#include sys/types.h
#include sys/socket.h
#include arpa/inet.h
const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);
这个函数转换网络二进制结构到ASCII 类型的地址,参数的作用和上面相同,只是多
了一个参数socklen_t cnt,他是所指向缓存区dst 的大小,避免溢出,如果缓存区太小无法存
储地址的值,则返回一个空指针,并将errno 置为ENOSPC 。
下面是例程:
#include stdio.h
#include stdlib.h
#include string.h
#include unistd.h
#include sys/socket.h
#include netinet/in.h
int main (void)
{
char IPdotdec[20]; //存放点分十进制IP 地址
struct in_addr s; // IPv4 地址结构体
// 输入IP 地址
printf(Please input IP address: );
scanf(%s, IPdotdec);
// 转换
inet_pton(AF_INET, IPdotdec,
您可能关注的文档
- 2015年北京第二外国语大学翻译硕士考研真题,考研重点讲解.pdf
- 高中生物ppt-08-必修一3-1、3.pdf
- MDCK-hMDR1细胞测定ML120B的细胞膜渗透性.pdf
- 国产生物质锅炉现状调查报告1.pdf
- 唐钢股份2002年年度报告.pdf
- 在高中生物新课程教学中,如何体现陶行知的教育思想.pdf
- 张斌北京试题1.pdf
- 企业社会责任报告CSR简介.pdf
- 致远M1移动协同软件V1.5.1(A6-m版)安装维护手册.pdf
- Android ListView 下拉刷新 上拉更多[实例].pdf
- 2023年江苏省镇江市润州区中考生物二模试卷+答案解析.pdf
- 2023年江苏省徐州市邳州市运河中学中考生物二模试卷+答案解析.pdf
- 2023年江苏省苏州市吴中区中考冲刺数学模拟预测卷+答案解析.pdf
- 2023年江苏省南通市崇川区田家炳中学中考数学四模试卷+答案解析.pdf
- 2023年江西省吉安市中考物理模拟试卷(一)+答案解析.pdf
- 2023年江苏省泰州市海陵区九年级(下)中考三模数学试卷+答案解析.pdf
- 2023年江苏省苏州市高新二中中考数学二模试卷+答案解析.pdf
- 2023年江苏省南通市九年级数学中考复习模拟卷+答案解析.pdf
- 2023年江苏省南通市海安市九年级数学模拟卷+答案解析.pdf
- 2023年江苏省泰州市靖江外国语学校中考数学一调试卷+答案解析.pdf
文档评论(0)