【发布时间】:2018-06-22 09:36:23
【问题描述】:
目前我正在尝试将多条消息从客户端发送到服务器并在服务器上回显它们,但不知何故我的消息没有到达服务器,直到我按 CTRL+Z(D) 并按 Enter 键。 只要用户不输入“退出”,我的循环就会运行,但尽管我将消息写入 OutputStream 并刷新它,但我的消息不会显示在服务器端,就好像我的客户端仍在读取输入一样。
(目前我不想使用 BufferedReaders 或 Threads,纯粹是出于学习原因。)
如果有人能告诉我我的错误/错误在哪里,那就太好了。 还阅读了 javadocs,但仍然找不到我的错误。
客户端.java
public class Client {
//class members
private String msg = null;
private Scanner scn = null;
public Client(String ip, int port) throws IOException {
//Connect to Server
try(Socket socket = new Socket(ip,port))
{
//Initialize class members
scn = new Scanner(System.in); //Init Scanner
msg="";
System.out.println("Enter message:");
//Write to Socket
OutputStream out = socket.getOutputStream();
while(!msg.equals("quit"))
{
msg=scn.nextLine();
out.write(msg.getBytes(), 0, msg.length());
out.flush();
}
}
catch (IOException ex)
{
System.err.println(ex);
}
}
服务器.java
public class Server {
//class members
private String msg = null;
public Server(int port) throws IOException {
//Setup ServerSocket.
ServerSocket server = new ServerSocket(port);
System.out.println("SERVER: Launched service.");
//Accept incoming connection requests.
while(true) {
try(Socket connection = server.accept())
{
System.out.println("SERVER: Client connection accepted.");
//Read Input
StringBuilder line = new StringBuilder();
InputStream in = connection.getInputStream();
for(int c=in.read(); c!=-1; c=in.read())
{
line.append((char) c);
}
System.out.println(line);
}
catch (IOException ex)
{
System.out.println("SERVER: Client disconnected!");
}
}
}
真诚地, 雷利
【问题讨论】:
标签: java loops sockets server client