Linux网络编程:Socket编程与通信协议
网络套接字 socket
在通信过程中,套接字一定是成对出现的 一个文件描述符指向一个套接字(该套接字内部存在两个缓冲区)
网络字节序(采用大端法进行存储)


IP地址转换函数

sockaddr套接字数据结构( man 7 ip)


listen()设置同时建立链接的监听上限数
accept()阻塞监听客户端链接
socket函数

Listen 设置同时与服务器建立连接的上限数:上线数值最大为128
accept

connect函数

C\S 通信模型编程 ->TCP通信流程分析


如果没有编写客户端的程序 使用nc ip地址 端口号 也可以连接服务器端 建立链接
为什么TCP建立链接需要三次握手 而断开连接则需要四次挥手呢?->是因为半关闭状态 ->所谓班关闭状态是关闭的内核中的缓冲区 而不是关闭的套接字
Tcp通信和Udp通信各自的优缺点

UDP通信
UDP的C\S模型


recv()/send() 只能用于TCP通信 替代read write
recvfrom 和 sendto函数


在服务器端使用recvfrom需要加上最后两个参数,因为最后两个参数是传出参数,服务器端需要知道他传出来的信息,以知道我处理完之后发送给谁 而客户端中如果接收则不需要加上最后两个参数 第一客户端不需要知道是谁发的,因为肯定是服务器端发的,如果实在想知道是谁发的 应该另外建一个空的sockaddr_in 结构体 来存储传出的信息 而不是用之前发送过去的那个sockaddr_in 地址
本地套接字与网络套接字比较
本地套接字


unlink()减少硬链接数