TCP通信
TCP:控制两个网络设备之间的点对点通信,两端分别是客户端与服务端
客户端(Client)
发送消息的一端
//发送
public static void main(String[] args) throws Exception {
//获取本机地址
InetAddress localHost = InetAddress.getLocalHost();
String hostAddress = localHost.getHostAddress();
//设置端口号
int port=null;
Socket socket=new Socket(hostAddress, port);
OutputStream outputStream = socket.getOutputStream();
outputStream.write("需要发送的消息".getBytes());
//关闭
outputStream.close();
socket.close();
}
服务端(Server)
接收消息的一端
//接收
public static void main(String[] args) throws Exception {
//此端口必须与客户端保持一致
int port=null;
ServerSocket serverSocket=new ServerSocket(port);
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
byte[] byteArray=new byte[1024*1];
int len=inputStream.read(byteArray);
String arr=new String(byteArray, 0, len);
System.out.println("收到的消息是:"+arr);
//查看消息的来源
String hostAddress = serverSocket.getInetAddress().getHostAddress();
System.out.println("消息来自于:"+hostAddress);
//关闭
inputStream.close();
serverSocket.close();
客户端的接收消息
//客户端中的接收
InputStream inputStream = socket.getInputStream();
byte[] byteArray=new byte[1024*1];
int len=inputStream.read(byteArray);
String string=new String(byteArray, 0, len);
System.out.println("回复的消息是:"+string);
//关闭
inputStream.close();
服务端的发送消息
OutputStream outputStream = accept.getOutputStream();
outputStream.write("需要发送的消息".getBytes());
//关闭
outputStream.close();
注释
1)运行时要先打开服务端,后打开客户端
2)两端的端口号必须保持一致
3)程序结束是,必须要对其关闭
UDP通信
只需要接收方的IP和Port,就可以直接发送,不需要先连接;其中每个程序都可以是服务器也可以是客户端
发送消息
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket();
int port = 端口号;
//获取主机地址
InetAddress address = InetAddress.getLocalHost();
String message = "需要发送的消息";
byte[] bytes = message.getBytes();
int length = bytes.length;
DatagramPacket datagramPacket = new DatagramPacket(bytes, length, address, port);
datagramSocket.send(datagramPacket);
//关闭
datagramSocket.close();
接收消息
public static void main(String[] args) throws IOException {
int port=端口号;
DatagramSocket serverSocket=new DatagramSocket(port);
byte[] byteArray=new byte[1024*3];
int len=byteArray.length;
DatagramPacket datagramPacket=new DatagramPacket(byteArray, len);
//接收
serverSocket.receive(datagramPacket);
byte[] byteArr=datagramPacket.getData();
int length = datagramPacket.getLength();
String message=new String(byteArr, 0, length);
System.out.println(message);
//关闭
serverSocket.close();
注释
1)两端的端口号要保持一致
2)对流进行关闭
3)先运行服务端,再运行客户端
相关关键字
TCP:socket、sereverSocket、accept
UDP:datagramSocket、datagramPacket、send、receive
本文深入解析了TCP和UDP两种网络通信协议的工作原理与应用场景。详细介绍了TCP的客户端和服务端如何进行点对点通信,包括消息的发送与接收流程,以及UDP如何实现无需连接即可直接发送消息的特性。强调了在运行时两端的端口号保持一致的重要性。
7242





