一.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()等。几组函数间比较相似,个别又有特点.
6.返回,等待另一个客户端请求.
7.关闭套接字.
二.TCP Client:
1.新建 socket()
2.连接 connect()
三.sockaddr_in数据结构
使用数据结构sockaddr_in存储IP和端口等参数
sockaddr_in(在netinet/in.h中定义):
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
将主机的无符号短整形数转换成网络字节顺序
面向无连接的套接字编程
服务器:(接收端)
1) 创建套接字(socket)
2) 将套接字绑定到一个本地地址和端口上(bind)
3) 用返回的套接字和客户端进行通信(recvfrom);
4) 关闭套接字
客户端:(发送端)
1) 创建套接字(socket)
2) 向服务器发送数据(sendto
3) 关闭套接字
来源:https://www.cnblogs.com/cj2014/p/4475981.html