Java TCP长连接详解:实现稳定、高效的网络通信

        while (true) {
            String message = scanner.nextLine();
            session.getBasicRemote().sendText(message);
        }
    } catch (DeploymentException | IOException e) {
        e.printStackTrace();
    }
}

}


以上代码使用Java的WebSocket API实现了一个简单的实时聊天室。服务器端使用`@ServerEndpoint`注解标记一个WebSocket端点,并实现了相应的事件处理方法。客户端使用`@ClientEndpoint`注解标记一个WebSocket客户端,并实现了相应的事件处理方法。


服务器端使用`broadcast`方法将接收到的消息广播给所有连接的客户端。客户端可以通过`session.getBasicRemote().sendText(message)`方法向服务器发送消息,并通过`@OnMessage`注解接收服务器发送的消息。


在实际应用中,可以根据需要修改和扩展这些代码,添加认证、消息过滤等功能,以满足实际的业务需求。


场景2:在线多人游戏


在在线多人游戏中,多个玩家需要通过服务器进行实时的游戏交互,包括角色移动、攻击等操作。服务器需要接收并处理玩家的操作,并将操作结果广播给其他玩家。


服务器端代码示例(使用Java的Socket编程):



import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;

public class GameServer {
private static final int PORT = 8888;
private List players;

public GameServer() {
    players = new ArrayList<>();
}

public void start() {
    try {
        ServerSocket serverSocket = new ServerSocket(PORT);
        System.out.println("服务器已启动,等待玩家连接...");

        while (true) {
            Socket playerSocket = serverSocket.accept();
            players.add(playerSocket);
            System.out.println("玩家已连接");

            Thread playerThread = new Thread(new PlayerThread(playerSocket));
            playerThread.start();
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private class PlayerThread implements Runnable {
    private Socket playerSocket;

    public PlayerThread(Socket playerSocket) {
        this.playerSocket = playerSocket;
    }

    @Override
    public void run() {
        try {
            InputStream is = playerSocket.getInputStream();
            OutputStream os = playerSocket.getOutputStream();
            byte[] buffer = new byte[1024];
            int length;

            while ((length = is.read(buffer)) != -1) {
                String message = new String(buffer, 0, length);
                System.out.println("接收到玩家消息:" + message);

                // 处理玩家消息
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值