java如何联机
使用Socket实现网络通信
Java中可以通过java.net.Socket和java.net.ServerSocket实现基于TCP的联机通信。客户端通过Socket连接服务器,服务器通过ServerSocket监听端口并接受连接。
客户端示例代码:
try (Socket socket = new Socket("服务器IP", 端口号);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println("客户端消息");
String response = in.readLine();
System.out.println("服务器响应: " + response);
} catch (IOException e) {
e.printStackTrace();
}
服务器端示例代码:
try (ServerSocket serverSocket = new ServerSocket(端口号);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))) {
String clientMessage = in.readLine();
out.println("服务器回复: " + clientMessage);
} catch (IOException e) {
e.printStackTrace();
}
使用DatagramSocket实现UDP通信
UDP适用于无连接的快速通信,通过java.net.DatagramSocket和java.net.DatagramPacket实现。
发送端示例代码:
try (DatagramSocket socket = new DatagramSocket()) {
byte[] sendData = "UDP消息".getBytes();
DatagramPacket packet = new DatagramPacket(sendData, sendData.length, InetAddress.getByName("目标IP"), 端口号);
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
接收端示例代码:
try (DatagramSocket socket = new DatagramSocket(端口号)) {
byte[] receiveData = new byte[1024];
DatagramPacket packet = new DatagramPacket(receiveData, receiveData.length);
socket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println("收到消息: " + message);
} catch (IOException e) {
e.printStackTrace();
}
使用Netty框架实现高性能网络通信
Netty是一个异步事件驱动的网络框架,适合高并发场景。需添加Maven依赖:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.68.Final</version>
</dependency>
服务器端启动代码:
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap bootstrap = new ServerBootstrap();
bootstrap.group(bossGroup, workerGroup)
.channel(NioServerSocketChannel.class)
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel ch) {
ch.pipeline().addLast(new ServerHandler());
}
});
ChannelFuture future = bootstrap.bind(端口号).sync();
future.channel().closeFuture().sync();
} finally {
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
使用WebSocket实现实时通信
Java可通过javax.websocket API或库如Tyrus实现WebSocket通信。
服务端端点示例:
@ServerEndpoint("/ws")
public class WebSocketEndpoint {
@OnOpen
public void onOpen(Session session) {
System.out.println("连接建立: " + session.getId());
}
@OnMessage
public void onMessage(String message, Session session) {
session.getAsyncRemote().sendText("回声: " + message);
}
}
使用RMI实现远程方法调用
Java RMI(Remote Method Invocation)允许跨JVM调用方法。需定义远程接口并继承java.rmi.Remote。
远程接口定义:
public interface RemoteService extends Remote {
String invokeMethod(String param) throws RemoteException;
}
服务端实现:
public class RemoteServiceImpl extends UnicastRemoteObject implements RemoteService {
public RemoteServiceImpl() throws RemoteException {}
@Override
public String invokeMethod(String param) {
return "处理结果: " + param;
}
}
客户端调用:

Registry registry = LocateRegistry.getRegistry("服务器IP", 端口号);
RemoteService service = (RemoteService) registry.lookup("RemoteService");
String result = service.invokeMethod("测试");






