传输层协议的编程

一.基本概念

  • List item

1.传输层为应用层服务,通过套接口(socket)。
2.传输层协议:

  • TCP:面向连接,可靠,安全,
  • UDP:无连接,不可靠,丢包,效率高

二.SOCKET编程
1.基于UDP的套接口编程

  • 数据小于60k
  • 无连接,不安全,效率高
  • 数据包写好目的地址,不需IO流来实现数据传输
    java类中现成的类直接用:
  • DatagramSocket:用于发送/接收数据包的套接字。
  • DatagramPacket:数据包
    2.实现
  • 发送端-客户端
    1.使用DatagramSocket 指定端口 创建发送端
    2.准备数据 一定转成字节数组
    3.封装成DatagramPacket包裹,指定目的地
    4.发送包裹send(DatagramPacket p)
    5.释放资源
public class UdpClient {
	public static void main(String[] args) throws Exception {
		System.out.println("发送方启动中。。。");
		//1.使用DatagramSocket 指定端口 创建发送端
		DatagramSocket client=new DatagramSocket(8888);
		//2.准备数据 一定转成字节数组
		String data="上海尚学堂";
		byte[] datas=data.getBytes();
		//3.封装成DatagramPacket包裹,指定目的地
		DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",9999));
		//4.发送包裹send(DatagramPacket p)
		client.send(packet);
		// 5.释放资源
		client.close();
	}
}
  • 接收端-服务器
    Address already in use: Cannot bind 同一个协议下端口不允许重复
    1.使用DatagramSocket 指定端口 创建接收端
    2.准备容器 封装成DatagramPacket包裹
    3.阻塞式接收包裹recevie(DatagramPacket p)
    4.分析数据(还原回字节数组)
    byte[] getData()
    getLength()
    5.释放资源
public class UdpServer {
	public static void main(String[] args) throws Exception {
		System.out.println("接收方启动中。。");
		 //1.使用DatagramSocket 指定端口 创建接收端
		DatagramSocket server=new DatagramSocket(9999);
		 //2.准备容器 封装成DatagramPacket包裹
		byte[] comtainer=new byte[1024*60];
		DatagramPacket packet=new DatagramPacket(comtainer,0,comtainer.length);
		 // 3.阻塞式接收包裹recevie(DatagramPacket p)
		server.receive(packet);
		 // 4.分析数据
		 //    byte[] getData()
		 //           getLength()
		byte[] datas=packet.getData();
		int len=packet.getLength();
		System.out.println(new String(datas,0,len));
		 // 5.释放资源 
		server.close();
	}
}

3.注意:
发送端:要把准备的数据转成字节数组再打包
接收端:将接收到的包,拆包,转成字节数组。
那么需要注意了,如果传输的是3.14这样的小数或者对象,图片呢
3.14采用Data流
对象使用对象流:对象的 序列化和反序列化
图片:文件输入输出流
也就是说需要结合IO相关知识来进行。
!!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值