Java网络通信
TCP
什么是TCP?
答:TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议,TCP 层是位于 IP 层之上,应用层之下的中间层。TCP 保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TCP / IP。
UDP
什么是UDP?
答:UDP (英语:User Datagram Protocol,用户数据报协议),位于 OSI 模型的传输层。一个无连接的协议。提供了应用程序之间要发送数据的数据报。由于UDP缺乏可靠性且属于无连接协议,所以应用程序通常必须容许一些丢失、错误或重复的数据包。
Socket
什么是Socket?
答:套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。
怎么使用Socket实现TCP?
package com.linx;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) throws IOException{
int port = 8888;
//1.新建服务端套接字
ServerSocket serverSocket = new ServerSocket(port);
//4.接收客户端发送的文字
Socket accept = serverSocket.accept();
InputStream inputStream = accept.getInputStream();
//5.读取客户端发送的文字
byte[] b = new byte[1024];
int read = inputStream.read(b);
System.out.println(new String(b,0,read));
//6.发送文字给客户端
OutputStream outputStream = accept.getOutputStream();
outputStream.write("收到谢谢".getBytes());
//10.关闭
accept.close();
serverSocket.close();
}
}
package com.linx;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class TCPClient {
public static void main(String[] args) throws UnknownHostException, IOException {
String host = "127.0.0.1";//IP地址
int post = 8888;//端口号
//2.新建套接字
Socket socket = new Socket(host,post);
//3.发送文字给服务端
OutputStream outputStream = socket.getOutputStream();
outputStream.write("你好服务器".getBytes());
//7.接收服务端发送的文字
InputStream inputStream = socket.getInputStream();
//8.读取服务端发送的文字
byte[] b = new byte[1024];
int read = inputStream.read(b);
System.out.println(new String(b,0,read));
//9.关闭
outputStream.close();
}
}
怎么使用Socket实现UDP?
package com.linx;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class TCPServer {
public static void main(String[] args) throws IOException {
//1.新建服务端DatagramSocket
DatagramSocket server = new DatagramSocket(5060);
//2.新建服务端DatagramPacket
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
//7.服务端接收客户端数据包
server.receive(packet);
//8.服务端读取客户端数据包
System.out.println(
packet.getAddress().getHostName() + "(" + packet.getPort() + "):" + new String(packet.getData()));
//9.服务端编辑数据包
packet.setData("Hello Client".getBytes());
packet.setPort(5070);
packet.setAddress(InetAddress.getLocalHost());
//10.服务端发送数据包给客户端
server.send(packet);
//10.关闭
server.close();
}
}
package com.linx;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class TCPClient {
public static void main(String[] args) throws IOException {
//3.创建客户端DatagramSocket
DatagramSocket client = new DatagramSocket(5070);
//4.创建客户端DatagramPacket
DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);
//5.编辑客户端DatagramPacket
packet.setPort(5060);
packet.setAddress(InetAddress.getLocalHost());
packet.setData("Hello Server".getBytes());
//6.发送数据包给服务端
client.send(packet);
//11.客户端接收服务端数据包
client.receive(packet);
//12.客户端读取服务端数据包
System.out.println(
packet.getAddress().getHostName() + "(" + packet.getPort() + "):" + new String(packet.getData()));
//13.关闭
client.close();
}
}
HttpClient
什么是HttpClient?
答:HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
怎么使用HttpClient?
//之后补充