本帖最后由 小石姐姐 于 2018-4-26 14:03 编辑
网络编程 : 让不同计算机上运行的程序可以通过网络进行数据交换 Socket`: 中文译名为 "套接字" 网络通信三要素 TCP : 传输控制协议 特点: 无连接的不可靠协议 数据传输大小限制为64K(一个包) 不需要建立连接即可传输 数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据可能有丢包的情况 适用场景: 适合实时性要求强的场合, 比如网络电话等环境, 这种协议延迟很小 UDP : 用户数据报协议 特点: 需要建立连接的可靠协议 没有数据传输大小的限制 在传输前需要先建立连接(三次握手) 它的重发机制保证了数据传输的准确性, 但因为需要接收方发回验证信息, 所以数据发送时间长, 数据流量大 适用场景: 这种方式适合准确性要求强的场合, 比如金融系统, 视频点播, 用户可以等待数据传输但是不能忍受错误 网络设备的标识 标识使用网络通信的进程的逻辑地址, 用于定位一个主机上的具体服务 查看端口号: netstat -an java.net.InetAddress类: 用于表示IP地址对象 (InetAddress的实例包含 IP 地址,还可能包含相应的主机名) 静态方法
static InetAddress getLocalHost(): 获取本机的InetAddress对象 static InetAddress getByName(String host): 根据主机名或IP的字符串获取主机的InetAddress对象 static InetAddress getLoopbackAddress(): 获取回环地址的InetAddress对象. 即127.0.0.1或localhost static InetAddress getByAddress(byte[] addr): 根据IP获取InetAddress对象
成员方法
UDP不区分发送端和客户端, 所以都使用DatagramSocket即可 java.net.Socket类: 基于TCP协议的Socket, 作为客户端 构造方法
成员方法
OutputStream getOutputStream(): 获取输出流对象, 用于发送数据 InputStream getInputStream(): 获取输入流, 用于接收数据 void close(): 释放资源
java.net.ServerSocket: TCP服务端 Socket客户端
发送数据给服务端: 使用Socket对象获取输出流对象OutputStream, write(byte[]) 接收服务端的数据: 使用Socket对象获取输入流对象InputStream, read(byte[])
ServerSocket服务端
接收客户端的数据: 使用accpet()方法返回的Socket对象获取输入流对象InputStream, read() 发送数据给客户端: 使用accpet()方法返回的Socket对象获取输出流对象OutputStream, write()
|