毛狗签名网—你的签名好帮手

毛狗签名网—你的签名好帮手

群聊专用代码?

59

基于TCP的群聊服务端代码

Java实现

```java

package com.zyf.day23;

import java.io.*;

import java.net.*;

public class TcpServer {

public static void main(String[] args) throws IOException {

ServerSocket serverSocket = new ServerSocket(5999);

while (true) {

Socket clientSocket = serverSocket.accept();

new Thread(new ClientHandler(clientSocket)).start();

}

}

}

class ClientHandler implements Runnable {

private Socket clientSocket;

public ClientHandler(Socket socket) {

this.clientSocket = socket;

}

@Override

public void run() {

try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {

String inputLine;

while ((inputLine = in.readLine()) != null) {

out.println(inputLine);

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

```

基于Python的群聊服务端代码

使用`socket`库

```python

import socket

host = socket.gethostname()

port = 5999

server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server_socket.bind((host, port))

server_socket.listen(5)

while True:

client_socket, addr = server_socket.accept()

print(f"欢迎 {addr} 加入聊天室")

client_socket.send(b"欢迎进入聊天室 . 请输入你的名字:\n")

while True:

name = client_socket.recv(1024).decode()

if not name:

break

print(f"{name} 已加入聊天室")

client_socket.close()

```

基于Netty的群聊服务端代码

Java实现

```java

import io.netty.bootstrap.ServerBootstrap;

import io.netty.channel.ChannelFuture;

import io.netty.channel.ChannelInitializer;

import io.netty.channel.ChannelPipeline;

import io.netty.channel.EventLoopGroup;

import io.netty.channel.nio.NioEventLoopGroup;

import io.netty.channel.socket.SocketChannel;

import io.netty.channel.socket.nio.NioServerSocketChannel;

import io.netty.handler.codec.string.StringDecoder;

import io.netty.handler.codec.string.StringEncoder;

public class GroupChatServer {

private int port;

public GroupChatServer(int port) {

this.port = port;

}

public void run() throws Exception {

EventLoopGroup bossGroup = new NioEventLoopGroup(1);

EventLoopGroup workerGroup = new NioEventLoopGroup(8);

try {

ServerBootstrap b = new ServerBootstrap();

b.group(bossGroup, workerGroup)

.channel(NioServerSocketChannel.class)

.childHandler(new ChannelInitializer() {

@Override

public void initChannel(SocketChannel ch) throws Exception {

ChannelPipeline p = ch.pipeline();

p.addLast(new StringDecoder());

p.addLast(new StringEncoder());

p.addLast(new ChatServerHandler());

}

});

ChannelFuture f = b.bind(port).sync();

f.channel().closeFuture().sync();

} finally {

bossGroup.shutdownGracefully();

workerGroup.shutdownGracefully();

}

}

}

class ChatServerHandler extends SimpleChannelInboundHandler {

@Override

protected void channelRead0(ChannelHandlerContext ctx, String msg) throws Exception {

for (ChannelHandlerContext ch : ctx.channel().children()) {

ch.writeAndFlush(msg + "\n");

}

}

}

```

这些代码示例展示了如何使用不同的技术栈(Java、