文章目录
- TCP套接字编程
- Socket编程
- Socket 编程
- TCP套接字编程
- TCPsocket编程
- C/S socket 交互: TCP
- 数据结构 sockaddr_in
- 数据结构 hostent
- UDP套接字编程
- UDP Socket编程
- Client/server socket 交互: UDP
TCP套接字编程
Socket编程
应用进程使用传输层提供的服务才能交换报文。实现应用层协议,实现应用。
TCP/IP:应用进程使用Socket API访问传输服务
地点:界面上的SAP(Socket)方式:Socket API
目标:学习如何构建能借助sockets进行通信的C/S应用程序
socket:分布式应用进程之间的门,传输层协议提供的端到端的服务接口
Socket 编程
2种传输层服务的socket类型:
- TCP:可靠的,字节流的服务
- UDP:不可靠(数据UDP数据报)服务
TCP套接字编程
套接字:应用进程与端到端传输协议(TCP或UDP)之间的门户
TCP服务:从一进程向另一个进程可靠地传输字节流
服务器首先运行,等待连接建立
1.服务器进程必须先处于运行状态
- 创建欢迎socket
- 和本地端口捆绑
- 在欢迎socket上阻塞式等待接受用户的连接
客户端主动和服务器创建连接:
2.创建客户端本地套接字(隐式捆绑到本地port)
- 指定服务器进程的IP地址和端口号,与服务器进程连接
3.当与客户端连接请求到来时 - 服务器接受来自于用户端的请求,解除阻塞等待,返回一个新的socket(与欢迎socket不一样),与客户端通信
- 允许服务器与多个客户端通信
- 使用源IP和源端口来区分不同的客户端
4.连接API调用有效时,客户端IP与服务器建立了连接
从应用程序的角度
TCP在客户端和服务端进程之间提供了可靠的,字节流(管道)服务
TCPsocket编程
C/S模式的应用案例:
1)客户端从标准输入装置读取一行字符,发送给服务器
2)服务器从socket读取字符
3)服务器将字符转换成大写,然后返回给客户端
4)客户端从socket中读取一行字符,然后打印出来
实际上,这里描述了C-S之间交互的动作次序
C/S socket 交互: TCP
数据结构 sockaddr_in
数据结构 hostent
UDP套接字编程
UDP Socket编程
UDP: 在客户端和服务器之间没有连接
- 没有握手
- 发送端在每一个报文中明确地指定目标的IP地址和端口号
- 服务器必须从收到的分组中提取出发送端的IP地址和端口号
UDP: 传送的数据可能乱序,也可能丢失
从应用程序的角度
UDP 为客户端和服务器提供
不可靠的字节组的传送服务