一.TCP Server:
1.创建套接字socket():socket本质上就是一个int的数字,文件描述符,用于标识主机间端到端的通讯。两端的主机,通过对该socket进行读写,完成双方的通讯。
2.绑定 bind():是将已经新建好的套接字(即:socket)与本地的地址进行一个联系(即:将socket绑定到一个本地地址和端口上)。
3.将套接字设定为监听模式,准备接受客户端请求listen(): 监听是告诉客户端,服务器这边已经准备好了,等待为其服务啦。
4.接收连接 accept():等待客户端请求到来,当请求到来后,接受连接请求,返回一个新的对应于此连接的套接字.
5.读写 read()/write() : 关于读写的函数比较多,read()\write(), recv()\send()、recvfrom\sendto(),recvmsg()\sendmsg()等。几组函数间比较相似,个别又有特点.
二.TCP Client:
1.新建 socket()
2.连接 connect()
三.sockaddr_in数据结构
使用数据结构sockaddr_in存储IP和端口等参数
1
2
3
4
5
6
7
8
9
10
11
12
13
|
struct
sockaddr_in
{
short
sin_family;
/*Addressfamily一般来说AF_INET(地址族)PF_INET(协议族)*/
unsigned
short
sin_port;
/*Portnumber(必须要采用网络数据格式,普通数字可以用htons()函数转换成网络数据格式的数字)*/
struct
in_addr sin_addr;
/*Internetaddress*/
unsigned
char
sin_zero[8];
/*Samesizeasstructsockaddr没有实际意义,只是为了跟SOCKADDR结构在内存中对齐*/
};
|
四.函数
1. inet_pton(AF_INET,ip,&server_address.sin_addr)
IP地址转换函数,可以在将IP地址在“点分十进制”和“二进制整数”之间转换
2. htons():host to network short
将主机的无符号短整形数转换成网络字节顺序