TCP/IP技术
1
Socket概述
网络API
1981年产生于BSD4.1
BSD Socket与Window Socket(WinSock)
数据的接收与发送类似于文件的读与写操作
连接相互通信的两台主机上的Socket
通常以库的形式实现(静态库与动态库)
–如何引用: .h, .lib(或.dll)
通常提供两种服务:数据报(datagram)与流(stream)
2
端点地址(Endpoint addresses)socket通信报文格式
每对连接的Socket共有五个部分组成:
–协议,本地地址,本地端口,远端地址,远
端端口
具体的调用:
–协议:socket
–本地地址,端口:bind
–远端地址,端口:connect, sendto
3
地址转换
内部表示(数字表示):32位长整
主机名字到数字表示(域名查询):gethostbyname()
十进制点分表示到数字表示:inet_addr()
数字表示到十进制点分表示:inet_ntoa()
数据结构:
struct sin_addr{
u_long    s_addr; // 32 位长整
}
struct sockaddr_in{
short sin_family;  // AF_INET
u_short sin_port;
struct sin_addr sin_addr; // network address
}
4
数据转换
多字节数据类型的字节顺序:(如长整型,短整型)
–Little Endian: 低位字节在前(Least Significant Byte First)DEC, INTEL
–Big Endian: 高位字节在前(Most Significant Byte First) SUN, HP, SGI
网络字节顺序:Big Endian
可移植性要求
转换函数:H: 主机,N:网络,S: short, L: long
–主机到网络,即发送时:htons, htonl
–网络到主机,即接收时:ntohs, ntohl
思考:发送字符串数据需要转换吗,包头中的端口号,长度域呢?
5

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。