TCP/UDP

TCP/UDP

TCP:基于连接的点对点安全传输协议,有连接,传输可靠,适用于大量数据传输,但是效率相对较慢。
UDP:基于广播形式一对多非安全传输协议,面向无连接,效率相对较快,但是只是适用于少量数据传输。

TCP

使用Socket,ServerSocket来实现连接,服务端设置端口号,客户端需和服务端端口号一致。
服务端核心代码:

		//1 创建一个ServerSocket对象 ,设置 这个应用程序的端口
		ServerSocket server = new ServerSocket(8889);
		// 2  监听客户端发送的socket对象  (只要有人请求服务器,则返回一个 Socket对象 ,此对象就是客户端发送的对象)
			Socket socket =  server.accept();
		//3从客户端接收的数据 在 输入流中
			InputStream is = socket.getInputStream();
			byte [] b = new byte[100];
			int len = is.read(b);
			System.out.println("接收的内容:"+new String(b,0,len));

客户端核心代码:

 //先 发送数据   1 需要创建一个 连接对方的套接字 Socket
		Socket socket = new Socket("127.0.0.1", 8889);   // 只要该语句没有异常 说明两端的管道已经建立
		// 2、发送数据  
		System.out.println("请输入您要发送的数据:");
		String msg = "你好";
		OutputStream os = socket.getOutputStream();
		os.write(msg.getBytes()); // 每写出一次,数据在服务端接收一次

实现多次聊天的话可以对监听出代码加一个循环,使其一致处于监听状态。

UDP

UDP协议更像是快递站的模式,一边建立一个快递站,发送方(客户端)发送数据,给数据加上内容,大小(字节长度),联系方式(地址)端口号(接收方),接收方接到后,先创建一个固定大小的盒子(创建数据包对象,指定接收数据的 初始长度 (实际数据大小以接收的为准 )),然后开始拆快递(获取接收的数据 并转成字符串 )。
服务端核心代码:

 // 1  创建  服务端 接收数据的 Socket对象       两边的端口号 一致
		DatagramSocket serverSocket = new DatagramSocket(8888);
		// 2  创建数据包对象,指定接收数据的 初始长度 (实际数据大小以接收的为准 )
			byte [] b = new byte[1024];
			DatagramPacket p = new DatagramPacket(b, b.length);
		//3 接收数据 ,也需要一个 DatagramPacket
			serverSocket.receive(p);
			//4  ,获取接收的数据 并转成字符串        默认情况下 getDate返回 初始长度的所有内容 
			 String msg = new String( p.getData(),0,p.getLength());

客户端核心代码:

 // 1、 创建一个用于发送数据报的对象 (相当于 快递员)
		DatagramSocket socket = new DatagramSocket();
		// 2 创建一个 DatagramPacket ,用于封装数据  和 指定 发送地址 端口
		String msg="hello  你好";
		
		// 参数1 : 内容, 参数 2  字节的长度   参数3  地址  参数4 端口  
		DatagramPacket packet  = new DatagramPacket(msg.getBytes(), msg.getBytes().length,
				InetAddress.getByName("127.0.0.1"), 8888);
				//发送 
				socket.send(packet);

UDP实现服务端客户端聊天也可以,因为客户端在发送数据的同时也将自己的IP地址发送过去了,服务端只需要从客户端接收数据提出IP地址,在给客户端设置一个默认的端口号两边就能实现多次聊天。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值