PartII基于LinuxMSWindows的Socket编程.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PartII基于LinuxMSWindows的Socket编程.ppt

Part II 基于Linux/MS Windows的Socket编程 简单的时间日期程序客户端(IPv4) daytimetcpcli.c简介 包含头文件 创建TCP socket 指定服务器IP与端口 与服务器建立连接 读取并显示服务器应答 终结程序 简单的Daytime客户端 (IPv6) daytimetcpcli6.c 服务器地址结构体sockaddr_in6 if ( (sockfd = socket(AF_INET6, SOCK_STREAM, 0)) 0) servaddr.sin6_family = AF_INET6; servaddr.sin6_port = htons(13); if (inet_pton(AF_INET6, argv[1], servaddr.sin6_addr) = 0) 错误管理: 包裹函数 sockfd = Socket(AF_INET, SOCK_STREAM, 0); 大写字母开头 lib/wrapsock.c Unix errno Value--错误码 简单Daytime服务器(IPv4) (迭代服务器) daytimetcpsrv1.c 介绍 创建 TCP socket 绑定服务器端口 将socket转换为监听socket 接受客户端连接,作出应答 终止连接 简单Daytime服务器(IPv6) (迭代服务器 ) daytimetcpsrvv6.c简介 结构体 函数 代码 #define in_addr_t unsinged int struct sockaddr_in serv Socket地址结构体 (1) IPv4 Socket地址结构体 #include netinet/in.h / winsock2.h linux/windows 所需要数据类型 注意 长度成员sin_len的设置和检查可选 sin_family, sin_addr, sin_port,等三个成员为必须的 in_addr_t 为32位以上的无符号整数 in_port_t 为16位以上的整数 sa_family_t可为任何类型的无符号整数 无论 IPv4 地址的TCP端口还是 UDP端口 都必须存储为网络字节顺序 serv.sin_addr指32位的IPV4地址,以 in_addr 结构存储,而 serv.sin_addr.s_addr 指相同的32位IPv4地址的in_addr_t形式 Socket地址结构 (2) 通用Socket地址结构 sys/socket.h #define SA struct sockaddr Socket地址结构 (3) IPv6 Socket 地址结构 (RFC 3493) Socket地址结构传送过程 绑定(bind) 连接(connect) 传输(sendto) Socket地址结构接收过程 Accept Recvfrom Getsockname getpeername 字节顺序函数 字节顺序转换函数 h(host)主机标准, n (network)网络标准, s (short)短整数标准 , l (long)长整数标准 . Berkeley-derived 函数 ANSI C函数 地址转换 (1) inet_aton 将C语言字符串从 strptr 转换到 32位网络字节顺序, 存储到addrptr inet_addr 作与同样的转换,但已废弃 inet_ntoa 转换32位网络顺序IPv4 地址为C标准字符串 地址转换(2) family : AF_INET或 AF_INET6 inet_pton转换字符串指针strptr为网络格式,保存到addrptr inet_ntop 转换网络数字(addrptr) 为数字指针(strptr). len为目标的长度, 防止内存溢出 地址转换 (3) #define INET_ADDRSTRLEN 16 /* for IPv4 dotted-decimal */ #define INET6_ADDRSTRLEN 46 /* for IPv6 hex string */ 例1 例2 协议无关函数 函数使用自己的静态缓存 保存结果,返回值为 缓存的指针 注意函数使用的是静态缓存,使用时要保证线程安全。 函数的实现(lib/sock_ntop.c ) 协议无关函数(1) 协议无关函数 (2) sock_bind_wild binds the wildcard address and an ephemeral port to a socket. lib/sock_bind_wild

文档评论(0)

docinppt + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档