一、SOCKET网络套接字
在网络中,要进行两台主机之间的通信,我们需要借助SOCKET网络套接字,那么什么是套接字呢,我们先来认识以下两个概念IP地址和端口号。
1.IP地址
2.端口号
二、网络字节序
在学习C语言的时候,我们知道了每一台主机由于CPU构架的不同,就有大小端之分。我们把数据的低字节放在内存的低地址这种形式就叫做大端,相反的,我们把数据的低字节放在内存的高地址处,就叫做大端。
在网络数据的传输中,因为通信的两台主机并不知道对方是大端还是小端,因此如果不统一的规定传输的协议,就很有可能出现发送方和接收方的数据不一致的问题。因此TCP协议规定:
(1)发送方主机通常将发送缓冲区的数据从低地址向高地址的顺序发送。
(2)接收方主机把接收到的数据按照从低地址向高地址来存放到接收缓冲区。
(3)TCP/IP协议规定,网络字节序一律采用大端字节序。即低字节存高地址。
所以,我们在发送数据的时候,必要的时候,需要把主机字节序转换为网络字节序,在接收的时候,同样,也要把网络字节序转换成主机字节序。下面我们介绍几个完成这项工作的接口:
这几个函数很好理解和记忆,h表示host(主机),n表示net(网络),s表示short int, l表示long。例如htonl()这个函数就是把32位主机字节序转换成网络字节序。