我尝试制作一个控制台聊天服务器。我面临的主要问题是我无法将消息发送到服务器..正如您在上传的img我看到的那样,服务器和客户端已连接。但是当我在客户端输入任何东西时。客户端无响应,我必须关闭cmd提示符。 我该如何解决这个问题?
我的电脑有问题或代码错了吗?
public class MyClient
{
Socket s ;
DataInputStream din ;
DataOutputStream dout;
public MyClient()
{
try
{
s= new Socket("localhost",10);
System.out.println(s);
din = new DataInputStream(s.getInputStream());
dout= new DataOutputStream(s.getOutputStream());
ClientChat();
}
catch(Exception e)
{
System.err.println(e);
}
}
public void ClientChat() throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//Scanner s2 = new Scanner(System.in);
String s1;
System.out.println("start the conversation");
do
{
s1=br.readLine();
//s1=s2.nextLine();
dout.flush();
System.out.println("server:"+din.readUTF());
}
while(!s1.equals("stop"));
}
public static void main (String args[])
{
new MyClient();
}
}
答案 0 :(得分:2)
答案 1 :(得分:0)
在dout.writeUTF(s1);
内使用do loop
。
writeUTF将允许您写入后续消息,直到那时它将停留在readutf函数。
java.io.DataOuputStream.writeUTF(String str)
方法使用修改后的UTF-8编码将字符串写入基础输出流。 Refer to this
答案 2 :(得分:0)
您需要使服务器和客户端成为一个线程,以便它们可以独立工作。
服务器作为线程将等待客户端连接并将接收消息。
客户端作为线程将自行工作。
问题是它们无法同时运行。