服务器没有收到来自客户端的更多消息
Server doesn't receive more messages from client
我正在创建一个聊天应用程序。客户端向服务器发送消息,服务器只接收第一条消息而不是更多。
服务器读取线程
private void read(ObjectInputStream ois) {
new Thread() {
@Override
public void run() {
try {
String[] contents = (String[]) ois.readObject();
MainContainer.gh.add(new JLabel(contents[0] + " : " + contents[1]));
} catch (Exception ex) {
System.out.println("Sorry.");
}
}
}.start();
}
客户端写法
public void write(String[] contents) {
try {
oos.writeObject(contents);
} catch (Exception ex) {
System.out.println("Sorry");
}
}
提前致谢。如果您需要额外的代码,您可以提出要求。谢谢
您的代码没有循环。
所以它收到第一个名为 contents
的数组然后退出。
你应该添加一个类似于这个的循环
while (true) {
// Receive messages
}
服务器代码必须运行循环。根据记忆,服务器线程应该运行像这样
while (running) {
// block until next request
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// Read from in. Write to out. Your code here...
}
running
通常是一个 volatile
变量,可以设置为从其他线程发出程序应该停止的信号。或者你可以中断线程。另外,准备让用户配置套接字超时。
我正在创建一个聊天应用程序。客户端向服务器发送消息,服务器只接收第一条消息而不是更多。
服务器读取线程
private void read(ObjectInputStream ois) {
new Thread() {
@Override
public void run() {
try {
String[] contents = (String[]) ois.readObject();
MainContainer.gh.add(new JLabel(contents[0] + " : " + contents[1]));
} catch (Exception ex) {
System.out.println("Sorry.");
}
}
}.start();
}
客户端写法
public void write(String[] contents) {
try {
oos.writeObject(contents);
} catch (Exception ex) {
System.out.println("Sorry");
}
}
提前致谢。如果您需要额外的代码,您可以提出要求。谢谢
您的代码没有循环。
所以它收到第一个名为 contents
的数组然后退出。
你应该添加一个类似于这个的循环
while (true) {
// Receive messages
}
服务器代码必须运行循环。根据记忆,服务器线程应该运行像这样
while (running) {
// block until next request
Socket socket = serverSocket.accept();
InputStream in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
// Read from in. Write to out. Your code here...
}
running
通常是一个 volatile
变量,可以设置为从其他线程发出程序应该停止的信号。或者你可以中断线程。另外,准备让用户配置套接字超时。