我正在学习一些Java套接字编程,并且我设法在服务器和客户端之间建立了第一个连接。这引起了我的好奇:如果不是" Connected"会发生什么?和"收到的消息"消息我做了一个"聊天室"类型的东西,服务器和客户端输入相互打印?所以我试着这样做。
现在,我知道这不是创建聊天室的方式(我可能需要Threads等等),但我很好奇为什么这不起作用:
服务器:
public void run() throws Exception
{
boolean isChatting = true;
Socket clientSocket = new Socket("localhost", 444);
PrintStream ps = new PrintStream(clientSocket.getOutputStream());
ps.println("Connected.");
BufferedReader bfr = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
BufferedReader bfrClient = new BufferedReader(new InputStreamReader(System.in));
String serverMessage = bfr.readLine();
String clientMessage;
System.out.println("Server: "+serverMessage);
while (isChatting)
{
clientMessage = bfrClient.readLine();
ps.println(clientMessage);
if (clientMessage.toUpperCase().equals("EXIT"))
{
isChatting = false;
}
}
bfr.close();
bfrClient.close();
}
客户端:
public void run() throws Exception
{
boolean isChatting = true;
ServerSocket server = new ServerSocket(444); //Port
Socket sSocket = server.accept();
PrintStream ps = new PrintStream(sSocket.getOutputStream());
BufferedReader bfr = new BufferedReader(new InputStreamReader(sSocket.getInputStream()));
BufferedReader bfrPersonal = new BufferedReader(new InputStreamReader(System.in));
String clientMessage = bfr.readLine();
String messageToSend;
System.out.println("Client: "+clientMessage);
if (clientMessage != null)
{
ps.println("Connected.");
}
while (isChatting)
{
messageToSend = bfrPersonal.readLine();
ps.println(messageToSend);
if (messageToSend.toUpperCase().equals("EXIT"))
{
isChatting = false;
}
}
bfr.close();
bfrPersonal.close();
}
感谢您的时间! :)
答案 0 :(得分:-1)
如果您想创建聊天系统,最简单的方法是在服务器上创建两个线程,在客户端创建两个线程。
第一个线程处理用户的输入并发送它。
第二个线程处理来自其他聊天系统的输入并打印出来。