1.网络编程概述
地址 | IP地址 |
端口号 |
一台拥有IP地址的主机可以提供多种服务,如Web服务,FTP服务,SMTP服务等,
主机如何区分不同的网络服务:通过“IP地址+端口号”来区分
端口提供了一种访问通道
服务器一般都是通过知名端口号来识别的。
TCP/UDP
1.TCP是面向连接的,UDP是无连接的(发送数据前不需要建立连接)。
2.TCP提供可靠的服务,通过TCP发送的数据,无差错,不丢失,无重复,且按序到达;
UDP尽最大努力交付,即不保证可靠交付。
3.TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP面向报文,UDP没有拥塞控制,因此网路出现拥塞,不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议)
4.每一条TCP连接只能是点到点的,UDP支持一对一,一对多,多对一,多对多的交互通信
5.TCP首部开销20字节,UDP首部开销小,只有8字节
6.TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
2.字节序
字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。
1. Little endian:将低序字节存储在起始地址
2. Big endian:将高序字节存储在起始地址
Little endian(小端字节序)
Big endian(大端字节序)
网络字节序=大端字节序
3.socket编程步骤
socket服务器和客户端开发步骤
TCPserver
1.创建套接字 socket()
2.为套接字添加信息(IP地址和端口号) bind()
3.监听网络连接 listen()
4.监听到有客户端接入,接受一个连接 accept()
5.数据交互 read()write()
6.关闭套接字,断开连接 close()
TCPclient
1.socket()
2.connect()
3.write()read()
4.close()
地址转换API
int inet_aton(const char* straddr,struct in_addr *addrp);
把字符串格式的“192.168.1.123”转换为网络能识别的格式
char* inet_ntoa(struct in_addr inaddr);
把网络格式的IP地址转为字符串形式