InetAddress Address = InetAddress.getByName("172.24.3.154");
kkSocket = new Socket(Address, 2003);
out = new ObjectOutputStream(kkSocket.getOutputStream());
in = new ObjectInputStream(kkSocket.getInputStream());
public static <T> Object sendReceive(T obj) {
try {
out.writeObject(obj);
out.flush();
System.out.println("Client : " + obj.toString());
Object resp = in.readObject();
if (resp != null) {
System.out.println("Server : " + resp.toString());
}
return resp;
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
这是我向服务器发送请求的客户端方法。
out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
System.out.println("Server: S-a conectat :" + socket.getInetAddress());
Protocol protocol = new Protocol(server);
while (socket.isClosed() != true) {
Object response = protocol.processInput(in.readObject());
System.out.println("Server: message Received: " + getName());
if (response != null) {
out.writeObject(response);
out.flush();
} else {
out.writeObject(null);
out.flush();
}
}
这就是我的服务器所做的。它也可以工作。我的问题是:为套接字提供此设置我如何为客户端创建一个单独的侦听器,以便在某个时间向客户端发送一条消息,而客户端仍然正常运行?
我尝试创建一个新线程来管理客户端的输入流,但应用程序不会启动,它只是卡在线程
Thx 的运行方法中。
编辑 :
我正在做的是一个带有套接字的多客户端应用程序,使用多线程。我有上面的代码并为我工作,用于调用“sendReceive”方法向服务器发出请求并返回一些东西。我正在尝试什么做的是当我收到一个特定的请求时,我想通知所有在线客户端。我应用了这样的观察者模式:服务器是可观察的,线程是观察者。当一个特定的请求进来时,我会通知所有的踏板,但我t get each threat to send to the clients immediately a message because the client doesn
听不见。也许我走错了路。有人可以帮忙吗?