现在我的ServerSocket是这样的
public class Main {
public static void main(String[] args) {
Server server = new Server(9008);
}
}
public class Server {
private ServerSocket server;
private Socket client;
private ArrayList<ClientConnection> clientList;
public Server(int port) {
try {
// Create out server with our desired port
server = new ServerSocket(port);
// Server started, let the user know
System.out.println("Server started at port " + port + "...");
} catch (IOException e) {
// Unable to start server, print error
System.out.println("Unable to start server on port " + port + "...");
}
// Start our main server method
runServer();
}
public void runServer() {
clientList = new ArrayList<>();
while (true) {
try {
// Wait for new clients and accept them
client = server.accept();
// Let the user know - print
System.out.println("New user connected - " + client.getLocalAddress().getHostAddress());
// Start thread for our client
ClientConnection getClient = new ClientConnection(client);
clientList.add(getClient);
Thread clientThread = new Thread(getClient);
clientThread.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class ClientConnection implements Runnable {
private Socket socket;
public ClientConnection(Socket client) {
// Set client socket
this.socket = client;
}
public void run() {
try {
// Read from our client input
BufferedReader readClient = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = readClient.readLine()) != null) {
// Print client message
System.out.println("Client says - " + line);
}
} catch(IOException e) {
}
}
}
一切正常,客户端连接,发送一些数据,服务器读取它,但我的问题是如何从我的服务器发送消息到所有的客户端?我目前保存客户端上的ArrayList,所以我可以只是循环,ArrayList打开一个作家和刷新它,但我想发送的数据,我得到我的ClientConnection类
我应该如何处理这个代码?在服务器类上完成的所有操作?或
不要说得太具体,但您可能应该看看观察者模式。
当一个新的客户端连接到服务器并且您创建了ClientConnection
实例时,它可以被处理消息的另一个类观察到。这样,当客户端发送消息并且ClientConnection处理它时,它会自动将消息传输到处理消息传递功能并了解所有连接的类,然后该类将消息传输到所有客户端。
Server
实现了观察者界面,这样它就可以观察到可观察的东西。ClientConnection
并使Server
监听它(add观察员()
)ClientConnection
执行setChanged()
和通知观察员
服务器
就会注意到(通过它应该实现的更新
方法)新消息,以及是哪个ClientConnection
发送了它。服务器
现在遍历其所有客户端并将消息发送给每个客户端见观察者和观察者,这应该足够了。如果没有,网上有一大堆关于观察者模式的文章。
我有这个代码可以在eclipse中与android Studio中的客户端通信服务器,我使用套接字,客户端向服务器发送消息,服务器读取该消息并确定一切正常,但当服务器向客户端发送消息时,客户端不强制任何东西;这是代码 还有这个 此代码是服务器代码的一部分,如果您需要客户端代码(Android Studio),请告诉我。 我需要帮助拜托
我试图了解服务器-客户端网络如何为实时多人游戏工作。 假设我正在构建一个实时多人游戏,比如FPS。 如果玩家A向玩家B开枪,后端< code >服务器需要告诉玩家B他们被击中了。 我知道如何让玩家 A 告诉后端服务器他开了一枪,只是向服务器发送请求,但是如何让后端告诉玩家 他们被枪杀了? 玩家B是否必须每0.1秒检查一次后端以查看是否发生了什么事情,或者是否有更有效的方法?
前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
本文向大家介绍java UDP通信客户端与服务器端实例分析,包括了java UDP通信客户端与服务器端实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java UDP通信客户端与服务器端。分享给大家供大家参考,具体如下: 最初Udp是以字节为单位进行传输的,所以有很大的限制 服务器端: 用户端: 注:由于必须以字节为单位进行传输,Udp的传输用了一个容器类的东西,用来接收字节 先建
问题内容: 我试图用没有gui的服务器连接带有gui的客户端。连接已完成,但我看不到这两个应用程序之间的任何消息。(我应该在客户端中找到SERVER HERE,在服务器中找到CLIENT HERE) 客户端连接代码: (输入和输出在此客户端类扩展到的GUI类中定义。定义为“受保护的BufferedReader输入;受保护的PrintWriter输出;”) 另外,服务器代码: 连接似乎还可以,所以我