网络编程中的两个主要问题
- 如何准确的定位网络上的一台或者多台主机
TCP/IP协议中IP协议主要负责网络主机的定位,数据传输的路由,可以由IP地址唯一的确定Internet上的一台主机。
- 找到主机后如何进行可靠高效的数据传输
TCP层提供面向应用的可靠传输(TCP) 或者非可靠的UDP数据传输机制。目前比较流行的网络编程模型为C/S架构,也就是通信一方作为服务器等待客户提出请求并给予相应,客户端在需要服务时向服务器提出申请。服务器一般作为守护进程始终执行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。
TCP协议和UDP协议
TCP:Transfer Control Protocol的简称,是一种面向连接的可靠传输协议。通过TCP协议传输得到的是一个顺序的无差错的数据流,发送方和接收方的成对的连个socket必须建立连接,以便在TCP协议的基础上进行通信。
UDP:User Datagram Protocol的简称,是一种无连接的协议。每个数据报都是一个独立的消息,包括完整的源地址或目的地址,在网络上以任何可能的路径进行传送,能否到达目的地以及到达的时间都不确定。
UDP | TCP | |
---|---|---|
连接性 | 无连接 | 面向连接 |
传输数据大小 | 大小有限制,64KB以内 | 统一格式数据传输 |
可靠性 | 不可靠,不保证到达 | 可靠协议 |
应用 | Telnet/FTP | 视频会议 |
基于Socket的Java网络编程
网络上两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端成为一个Socket。Socket通常用来实现客户方和服务端的链接。一个Socket由一个IP和一个PROT唯一确定。Java环境下,Socket编程主要是指基于TCP/IP协议的网络编程。
Socket通信流程
- Server端监听某个端口是否有连接请求
- Client端相Server端发送Connect请求
- Server端相Client端发送Accept消息,建立连接。
- Server端和Client端都可以通过Send,Write等方式通信。
- 关闭Socket
创建一个Socket
Java中java.net包中提供了两个类,Socket,ServerSocket,分别表示双向连接的客户端和服务端。
客户端类的构造方法:
|
|
服务端的构造方法:
|
|
简单的Client/Server程序
未完