TCP和UDP通信的区别?
TCP和UDP一样,都能实现两台计算机之间的通信,通信的两端都需要建立Socket对象。区别在于,UDP只有发送端和接收端。、不分客户端和服务端,计算机之间可以任意发送数据。而TCP要严格区分客户端和服务端,在通信的时候,必须先有客户端
连接服务器端才能实现通信,服务端不可以主动连接客户端,并且服务端程序需要是先启动等待客户端连接。
在JDK中提供两个类用于实现TCP通信,一个是ServerSocket,表示服务器端;另一个是Socket,表示客户端。
TCP服务端程序:
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException {
System.out.println("服务端开启");
/*
* 需求:获取客户端的数据并显示在屏幕上;
* 思路:
* 1. 创建服务端的Socket;一定要明确端口,监听一个端口;
* 2. 服务端只要获取连接过来的客户端就可以和制定的客户端进行通信了;
* 3.通过获取客户端的读取流读取客户端发送的数据;
* 4.并显示在屏幕上;
* 5.关闭资源
*/
//1. 创建服务端的Socket;一定要明确端口,监听一个端口;
ServerSocket ss=new ServerSocket(10000);
//2. 服务端只要获取连接过来的客户端就可以和制定的客户端进行通信了;
while(true)
{
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"....连接上了");
//3.通过获取客户端的读取流读取客户端发送的数据;
InputStream in=s.getInputStream();
//4.读取数据并显示在屏幕上;
byte buf[]=new byte[1024];
int len=in.read(buf);
String text=new String(buf,0,len);
System.out.println(text);
//5.关闭资源
s.close();
}
}
}
TCO客户端程序:
import java.io.*;
import java.net.*;
import org.omg.CORBA_2_3.portable.OutputStream;
import Netqunliao.newqunliao;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("开始网络编程");
/* 需求:通过TCP传输将数据发送给服务器
* 1.建立TCP客户端的Socket,明确服务器端的地址和端口;
* 2.如果通道建立成功则会自动建立 socket IO流;
* 客户端需要做的就是获取socket流的输出流,将数据发送到目的地服务器端;
* 3.通过Socket输出流将数据发送;
* 4.关闭资源;
*
*/
//创建socket 对象
Socket cs=new Socket("122.206.79.255",10000);
// 使用流
OutputStream os = (OutputStream) s.getOutputStream();
//通过socket流将数据发送出去
os.write("TCP网络编程".getBytes());
// 关闭资源
cs.close();
}
}