计算机通讯离不开各种通讯协议,你们知道udp协议和tcp协议吗?它们是计算机通讯中最常用的两种通讯协议,那又该如何在编程中实现它们呢?快跟小编一起来看看吧。
一、UDP协议与TCP协议基础概念
1.UDP是什么?
UDP: UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层——传输层,处于IP协议的上一层。
UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。
2.TCP是什么?
TCP: TCP协议全称是传输控制协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。
TCP是面向连接的、可靠的流协议。
流就是指不间断的数据结构,你可以把它想象成排水管中的水流。 三次握手。效率低
二、UDP协议发送数据
1.服务端
package udp; import java.io.IOException; import java.net.*; /** * @Author * @Company www.tulingedu.com * udp协议-服务端 */ public class Server { public static void main(String[] args) throws IOException { //创建Socket对象 DatagramSocket ds = new DatagramSocket(); //创建数据 String str = "Hello udp,I'm comming"; InetAddress localHost = InetAddress.getByName("fred"); DatagramPacket dp = new DatagramPacket(str.getBytes(), str.length(), localHost,8888); //发送数据 ds.send(dp); //释放资源 ds.close(); } }
2.客户端
package udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /** * @Author * @Company www.tulingedu.com * udp协议-客户端 */ public class Client { public static void main(String[] args) throws IOException { //创建接收端Socket对象 DatagramSocket ds = new DatagramSocket(8888); //接收数据 byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length); System.out.println(1); ds.receive(dp); //阻塞 System.out.println(2); //解析数据 InetAddress address = dp.getAddress(); byte[] data = dp.getData(); int len = dp.getLength(); //输出数据 System.out.println("send to..." + address); System.out.println(new String(data, 0, len)); //释放资源 ds.close(); } }
三、TCP协议发送数据
1.服务端
package tcp; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * @Author * @Company www.tulingedu.com * tcp协议-服务端 * */ public class Server { public static void main(String[] args) throws IOException { //创建服务端Socket对象 ServerSocket server = new ServerSocket(8888); //监听 Socket s = server.accept(); //获取输入流对象 InputStream is = s.getInputStream(); //输出数据 byte[] bytes = new byte[1024]; int len = is.read(bytes); System.out.println(new String(bytes, 0, len)); //释放资源 s.close(); //server.close(); } }
2.客户端
package tcp; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; /** * @Author * @Company www.tulingedu.com * tcp协议-客户端 * * Exception in thread "main" java.net.ConnectException: Connection refused: connect */ public class Client { public static void main(String[] args) throws IOException { //创建发送端Socket对象 Socket s = new Socket(InetAddress.getByName("fred"), 8888); //获取输出流对象 OutputStream os = s.getOutputStream(); //发送数据 String msg = "Hello tcp,i m client"; os.write(msg.getBytes()); //释放资源 // os.close(); s.close(); } }
以上就是关于TCP与UDP协议的一些基础概念了,如果还想要了解更多相关java常见问答知识,请关注并了解我们的网站吧。
推荐阅读: