【发布时间】:2017-04-29 14:29:56
【问题描述】:
我的客户端不处理从服务器发送的命令,但我的服务器可以处理客户端发送的命令。 如果我在调试中运行我的客户端,则线程“in”正在等待输入字符串并执行命令。
我减少了我的代码以便于阅读。
服务器:
public class Server extends Thread{
BufferedReader in;
PrintWriter out;
ServerSocket server;
Socket client = null;
Frame frame;
Server() throws IOException{
frame = new Frame();
try {
server = new ServerSocket(4444);
frame.textAreaForServer.append("Welcome to server side!\n");
} catch (IOException e) {
frame.textAreaForServer.append("Couldn't listen to port 4444\n");
System.exit(-1);
}
addListenerOnTextField();
this.start();
}
private void clearVector(){
frame.textAreaForServer.append("-clr\n");
try {
//send message for client
out.println("-clr");
frame.textAreaForServer.append("Vector is cleared\n");
} catch (NullPointerException e1) {
frame.textAreaForServer.append("It's impossible to perform!\n");
}
}
public void run(){
while (true) {
try {
//connection to client
if (client == null) {
frame.textAreaForServer.append("Waiting for client connection...\n");
client = server.accept();
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
frame.textAreaForServer.append("Client connected\n");
}
} catch (IOException e) {
frame.textAreaForServer.append("Can't accept\n");
System.exit(-1);
}
}
}
客户:
public class Client extends Thread{
Socket fromserver = null;
BufferedReader in = null;
PrintWriter out;
ControlPanel controlPanel;
Client(ControlPanel controlPanel1) throws IOException {
controlPanel = controlPanel1;
addListenerOnTextField();
this.start();
}
//connection to server
private void connect(ControlPanel controlPanel) {
controlPanel.textAreaForClient.append("-ct\n");
if (fromserver == null) {
controlPanel.textAreaForClient.append("Connecting to localhost...\n");
try {
fromserver = new Socket("localhost", 4444);
in = new BufferedReader(new InputStreamReader(fromserver.getInputStream()));
out = new PrintWriter(fromserver.getOutputStream(), true);
} catch (IOException e1) {
controlPanel.textAreaForClient.append("Server is not available!\n");
}
} else {
controlPanel.textAreaForClient.append("Already connected\n");
}
}
public void run() {
while (true) {
//here the -clr command sent from server should be proceeded, but it doesn't
try {
switch (in.readLine()) {
case "-clr": {
VectorOfThreads.getInstance().getVectorOfThreads().removeAllElements();
controlPanel.textAreaForClient.append("Vector is cleared\n");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
【问题讨论】:
标签: java client-server