Java 中怎么实现UDP和TCP
简述一下,今天的两位加冰:UDP和TCP,下面让它们自我介绍一下:(有请)
ladies And gentleman
UDP:用户数据报协议
TCP:传输控制协议
介绍完后,欢迎它们加入Java的大家庭:
那它们在Java中怎么实现了;很显然,在Java中有相应的类来实现它们
开始:
UDP(用户数据报协议)
Java 中用DatagramSocket类实现UDP;看类名就知道了:数据报套接字
下面来看个案例:
SendTest 类用于发送消息,类似广播电台,我只管播音,管你听不听。这里是我只管发送消息,管你接不接,这听起来就不安全,
package com.dxx.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class SendTest {
public static void main(String[] args) throws IOException {
String msg = "你好";
int port = 8080;
InetAddress address = InetAddress.getByName("127.0.0.1");//表示主机地址
byte[] buf = msg.getBytes();
DatagramSocket socket = new DatagramSocket();
DatagramPacket packet = new DatagramPacket(buf, buf.length, address, port);
socket.send(packet);
System.out.println("发送完毕");
}
}
ReciveTest类是用来接受SendTest 类发送出来的消息
package com.dxx.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ReciveTest {
public static void main(String[] args) throws Exception {
boolean flag = true;
int port = 8080;
DatagramSocket socket = new DatagramSocket(port);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
System.out.println("正在寻找广播...");
while (flag) {
socket.receive(packet);
String msg = new String(packet.getData());
System.out.println("**************\n");
System.out.println(msg);
}
System.out.println("\n**************\n");
System.out.println("接受完毕!");
}
}
首先运行ReciveTest类(如果在SendTest类之后运行,会造成信息丢失)
然后运行SendTest类发送----你好
发送之后,应该ReciveTest类能接住—你好
果不其然:
二、TCP协议
Java中有两个类对应了TCP,分别是:ServerSocket类和Socket类
ServerSocket类:此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。
Socket类:此类实现客户端套接字(也可以就叫“套接字”)。套接字是两台机器间通信的端点。
案例略
三、总结
二者区别:
TCP 面向连接,可靠
UDP 非面向连接,不可靠