探讨socket编程(一)

这是socket编程进阶使用函数解析:

1. 怎么用?
2. 何时何地用?

问题1:地址查询:490页,暂时也没弄懂作用如何?映射是指?

1. 计算机系统的主机信息
2. 网络名字和网络编号
3. 协议名字和协议编号之间进行映射
4. (服务)由地址的端口号表示,服务与端口号的三个调用函数
5. 主机名、服务名一起映射到一个地址

主机名到底指的是什么?
指的是:

问题2:获取本地与远程地址:

1. 497页,也不知道是说啥。
2. http://blog.csdn.net/coolingcoding/article/details/7392107

问题3:解析socket API里面的发送和接收都有四类函数。

问题4:简单地,有两种归纳:

1. 主机子序和网络子序的转换
2. 网络地址与二进制的转换:针对于IP地址

问题5:soket(2)的意思?
注:“ socket(2)”这样的表示形式是 Unix 文档中通行的表示方式, socket 是函数名字,
()表示这是一个函数, 括号中的 2 表示这个函数的手册位于手册页 2 中,可以使用命令:
man 2 socket 来进行查看。

问题6;关于connect输入的sockfd和accept返回的sockfd以及listen输入的sockfd关系?
apue 500页 497页
connect输入的socfd是客户端的socket文件描述符,其sockaddr结构数据是客户端的socket信息,里面包含的指定地址就是我们想与之通信的服务器地址、通信协议类型、进程套接字端口。
listen输入的sockfd是服务器的sockfd文件描述符,也是服务器原始sockfd。
accept返回的sockfd文件描述符连接到调用connect的客户端,该sockfd与输入的原始sockfd没有关联。

问题7:阻塞与非阻塞体现在哪里?
服务器接收客户端请求使用accept函数的时候,
阻塞下,accept会阻塞直到一个请求到来,
非阻塞下,accept直接返回-1

问题8:connect重新连接的方式与时间间隔分配?
apue 498页,指数补偿算法
某次connect失败后,以2的指数次方递增重新connect的时间,直到最大值为止。

问题9:所谓的链接,对于服务器和客户端来说,意味着什么?
其实,链接就是需要在请求服务的进程套接字(客户端)和提供服务的进程套接字(服务器)之间建立一个链接。
也就是说,网络上,每socket创建一个套接字,就可以跟其他网络上的套接字相连接。

问题10:服务器使用accept,输入的sockaddr结构数据的客户端标识随机性?
根据服务器/客户端模型,客户端可以不使用bind,由系统自动绑定到一个随机的可用端口上进行通信。所以,服务器打印出accept的输入的sockaddr结构数据的端口时,会是随机的。

问题11:怎么判定字节序转换使用场景?
关于字节序:百度百科

问题12:所谓的服务器/客户端模型特性?

一般来说,服务器端具有以下特征:
 被动通信;
 始终等待来自客户端的请求; (listen、accept)
 自己参与通信的网络接口和端口必须确定; (必须要bind)
 处理客户端的请求后将结果(响应)返回给客户端。
而客户端的特征如下:
 主动通信;
 需要发起请求; (connect)
 自己参与通信的网络接口和端口可以不确定; (运行不bind)
 发起请求后需要等待服务器回应结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值