如何解决我无法从一个客户端获取消息以显示给另一个客户端
我正在尝试使用多线程服务器在 Java 中实现聊天,但无法从一个客户端获取消息以显示给另一个客户端。
这是我当前的 Server 和 ClientHandler。
import org.junit.Test;
import java.io.*;
import java.net.*;
public class Server {
private ServerSocket serverSocket;
public void start(int port){
try{
serverSocket = new ServerSocket(port);
while (true) {
new EchoClientHandler(serverSocket.accept()).start();
}
}catch(IOException e){
e.printstacktrace();
System.exit(1);
}
}
public void stop(){
try {
serverSocket.close();
}catch(IOException e){
e.printstacktrace();
System.exit(1);
}
}
private static class EchoClientHandler extends Thread{
private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
public EchoClientHandler(Socket socket){
this.clientSocket = socket;
}
public void run(){
try {
out = new PrintWriter(clientSocket.getoutputStream(),true);
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while((inputLine=in.readLine())!=null){
System.out.println("Client: "+inputLine);
out.println(inputLine);
//out.flush();
if(".".equals(inputLine)){
break;
}
}
in.close();
out.close();
clientSocket.close();
}catch(IOException e){
e.printstacktrace();
System.exit(1);
}
}
}
public static void main(String args[]){
Server server = new Server();
server.start(6666);
server.stop();
}
}
这是我的客户。
import java.net.*;
import java.io.*;
import java.util.*;
public class Client {
private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
public void startConnection(String ip,int port){
try {
clientSocket = new Socket(ip,port);
out = new PrintWriter(clientSocket.getoutputStream());
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
}catch(IOException e){
e.printstacktrace();
System.exit(1);
}
}
public void sendMessage(String msg){
out.println(msg);
out.flush();
}
public void readMessage(){
String msg;
try{
while((msg=in.readLine())!=null){
System.out.println(msg);
}
}catch(IOException e){
e.printstacktrace();
System.exit(1);
}
}
public void stopConnection(){
try {
in.close();
out.close();
clientSocket.close();
}catch(IOException e){
e.printstacktrace();
System.exit(1);
}
}
public static void main(String args[]){
Client client = new Client();
Scanner scn=new Scanner(system.in);
client.startConnection("localhost",6666);
System.out.println("Eingabe: ");
Thread sendMessage = new Thread(new Runnable(){
@Override
public void run(){
String str = "";
while(str!=null) {
str = scn.nextLine();
client.sendMessage(str);
}
}
}
);
Thread readMessage = new Thread(new Runnable(){
@Override
public void run(){
client.readMessage();
}
});
readMessage.start();
sendMessage.start();
}
}
感谢您的帮助,因为我已经尝试了好几个小时才能找到问题,但一直找不到。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。