黑马程序员技术交流社区
标题: [石家庄校区]网络编程笔记 [打印本页]
作者: 时光。 时间: 2018-4-23 14:52
标题: [石家庄校区]网络编程笔记
本帖最后由 小石姐姐 于 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()
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |