UNP读书笔记一 Socket编程的简单介绍!

一 源代码编译
也是在网上找的源代码编译方法,也很简单。
首先,在http://www.unpbook.com/unpv13e.tar.gz下载源代码。

二 几个重要的数据结构和函数

1 sockaddr和sockaddr_in结构
struct  sockaddr {
unsigned  
short   sa_family;
char   sa_data[ 14 ];
};

struct   sockaddr_in {
short    int   sin_family;                      
unsigned  
short    int   sin_port;
struct   in_addr  sin_addr;
unsigned  
char   sin_zero[ 8 ];
};

struct   in_addr {
unsigned  
long   s_addr;
};
这两个结构体大小一样,名字也比较像。Socket API最初设计的时候,想设计的尽可能的通用(在<<TCP/IP进行网际互联>>里有提到过),不只限于TCP/IP协议,所 以sockaddr结构体只定义了协议族字段和预留了14个字节来表示某个协议地址(协议地址占多少位取决于协议的设计,所以只能预留14个字节)。 sockaddr_in结构体则像是为TCP/IP协议地址设计的结构体,有一个端口号和IP地址来指定。这也只是我的理解,并不一定对。
实际编程中,bind、connect、recvfrom、sendto等Socket API用到的是sockaddr结构体。由于现在TCP/IP协议已经成为标准,多数情况下用到的都是表示TCP/IP地址的sockaddr_in结构。

2 htons htonl 函数
将主机字节序转化为网络字节序。这是由于,不同主机可能使用不同的方式来存储字节,Inel机器就是小尾端,需要转化为一种统一的序列,方便在网络上传输处理,就是网络字节序。

3 inet_addr 函数
将"192.168.1.100"这样的字符串转化为IP地址,inet_addr返回结果已经是网络字节序,不需要再转化。


三 一个简单的客户/服务器程序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值