本帖最后由 小石姐姐 于 2018-4-27 11:29 编辑
面向网络编程学习笔记
Day 12网络Socket网络通信3要素常用通信协议UDP
它是一种无连接的不可靠协议 数据传输大小限制为64K(一个包) 不需要建立连接即可传输 数据发送速度快, 发送方只发送数据, 不检查接收方是否真正接收到数据, 所以数据有丢包的情况 这种方式适合实时性要求强的场合, 比如网络电话, 网络游戏等环境, 这种协议延迟很小
TCP
它是一种需要建立连接的可靠协议 没有数据传输大小的限制 在传输前需要先建立连接(三次握手) 它的重发机制保证了数据传输的准确性, 但因为需要接收方发回验证信息, 所以数据发送时间长, 数据流量大 这种方式适合准确性要求强的场合, 比如金融系统, 视频点播, 用户可以等待数据传输但是不能忍受错误
InetAddress类UDP相关类TCP相关类代码演示public class Send {
public static void main(String[] args){
//创建发送端Socket对象
DatagramSocket ds = new DatagramSocket();
//准备数据
String s = "udp,im comming!!";
byte[] bytes = s.getBytes();
int length = bytes.length;
InetAddress address = InetAddress.getByName("192.168.15.255");
int port = 8888;
//创建数据报包对象
DatagramPacket dp = new DatagramPacket(bytes, length, address, port);
//发送数据
ds.send(dp);
//释放资源
ds.close();
}
}
public class Recieve {
public static void main(String[] args){
//创建接收端Socket对象
DatagramSocket ds = new DatagramSocket(8888);
//定义字节数组
byte[] bytes = new byte[1024];
//创建包对象接受数据
DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
ds.receive(dp);
//解析数据
InetAddress address = dp.getAddress();
String sender = address.getHostName();
int len = dp.getLength();
//输出结果
System.out.println("sender --- "+sender+new String(bytes,0,len));
//释放资源
ds.close();
}
}
|
|