Java网络编程UDP与TCP协议

UDP

UDP是User Datagram Protocol的简称,是一种无连接的协议。

UDP是从一台计算机向另一台计算机发送称为数据包的独立数据包的协议,该协议并不保证数据包是否能正确地到达目的地,它是一个非面向连接的协议。

每个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达时间以及内容的正确性都是不能保证的。

udp接收端:

1,创建一个udp服务并且监听端口

2,创建一个空的字节数组

3,创建packet服务

4,使用socket接收一个packet的数据包

4,关闭资源

import java.net.DatagramPacket;
import java.net.DatagramSocket;
//接收端
public class Demo3{
	public static void main(String[] args) throws Exception {
		DatagramSocket socket = new DatagramSocket(9090);
		byte[] buf = new byte[1024];
		DatagramPacket packet = new DatagramPacket(buf,buf.length);
		socket.receive(packet);
		System.out.println(new String(buf,0,packet.getLength()));
		socket.close();
	
	}
}

udp发送端:

1,创建udp服务

2,调用udp服务创建一个packet对象

3,准备数据(发送端数据要带上ip,端口号,udp255是一个广播地址)

 4,发送packet创建的数据

5,关闭资源

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
//发送端
public class Demo4{
	public static void main(String[] args) throws Exception {
		DatagramSocket socket = new DatagramSocket();
		String str="给接收端发送数据";
		DatagramPacket packet = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getLocalHost(), 9090);
		socket.send(packet);
		socket.close();
		
	}
}

TCP

TCP是Transfer Control Protocol(传输控制协议)的简称,是一种面向连接的保证可靠传输的协议。

在TCP/IP协议中,

IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一确定Internet上的一台主机。

而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。

通过TCP协议传输,得到的是一个顺序的无差错的数据流。

发送方和接收方的成对的两个socket之间必须建立连接,以便在TCP协议的基础上进行通信。

当一个socket(通常都是server socket)等待建立连接时,另一个socket可以要求进行连接,一旦这两个socket连接起来,它们就可以进行双向数据传输,双方都可以进行发送或接收操作。

TCP是一个基于连接的协议,它能够提供两台计算机之间的可靠的数据流。

HTTP、FTP、Telnet等应用都需要这种可靠的通信通道。

tcp服务端:

1,建立TCP服务(ServerSocket)需要监听一个端口

2,接收客户端连接(accpet()方法阻塞方法())

3,获取输入流对象,读取客户端发送的内容

4,闭关资源

public class Demo4{
	public static void main(String[] args) throws Exception {
		ServerSocket serverSocket = new ServerSocket(9090);
		Socket socket = serverSocket.accept();
		InputStream inputStream = socket.getInputStream();
		byte [] buf = new byte[1024];
		int temp = 0;
		temp = inputStream.read(buf);
		System.out.println(new String(buf,0,temp));
	}
}

tcp客户端:

1,建立服务(传入一个Localhost,端口)

2,获取对应的io流对象

3,写出或读取数据

4,关闭资源

import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

//客户端
public class Demo3{
	public static void main(String[] args) throws Exception {
		Socket socket = new Socket(InetAddress.getLocalHost(), 9090);
		OutputStream outputStream = socket.getOutputStream();
		outputStream.write("向服务端发送数据了".getBytes());
		socket.close();
	
	}
}

udp的特点: tcp的特点:

1,面向无连接 1,tcp基于io类传输的,面向连接

2,大小限制在64k2,tcp进行数据传输没有大小限制

3,不可靠3,面向连接通过三次握手的机制保证数据的完整性,可靠性协议

4,速度快4,速度慢

5,udp不分服务端和客户端只有接收端和发送端5,tcp区分客户端和服务端



版权声明:本文为oldman1543原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。