问题描述
我正在尝试使用多线程服务器在 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 (将#修改为@)