我正在尝试编写echo客户端服务器,但我没有收到服务器的任何响应。不知道我的错误在哪里。 我在互联网上看到了一些例子。有些人只是使用InputStream / OutputStream,但我决定使用BufferedReader和PrintWriter - 这会产生很大的差异吗?
服务器端:
public class Server {
public static void main(String[] args){
Server server = new Server();
server.runServer(Integer.parseInt(args[0]));
}
private void runServer(final int port){
ServerSocket serversckt = null;
Socket socket = null;
BufferedReader in = null;
PrintWriter out = null;
try{
serversckt = new ServerSocket(port);
socket = serversckt.accept();
System.out.println("Request from client accepted!");
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
String str;
while((str = in.readLine()) != null){
System.out.println(str);
out.println(str);
out.flush();
}
}
catch (IOException e) {
System.out.println(e.getMessage());
}
}
}
客户方:
public class Client{
public static void main(String[] args){
Client client = new Client();
client.runClient(Integer.parseInt(args[0]), args[1]);
}
private void runClient(final int port, final String hostname){
Socket sckt = null;
try{
sckt = new Socket(hostname, port);
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
BufferedReader in = new BufferedReader(new InputStreamReader(sckt.getInputStream()));
PrintWriter out = new PrintWriter(sckt.getOutputStream(), true);
String str;
while((str = stdIn.readLine()) != null){
out.println(str);
System.out.println(in.readLine());
}
} catch(IOException e){
System.out.println(e.getMessage());
}
}
谢谢!
答案 0 :(得分:1)
我无法重现您的问题。我在Client.java中添加了缺少的导入和最终}
,编译并在不同的终端中运行服务器和客户端。
客户端:
$ java Client 2000 localhost
FOO
FOO
酒吧
杆
服务器:
$ java Server 2000
接受客户的要求!
FOO
杆
每当我在客户端窗口中写一些东西时,它都会回复给我,同一行出现在服务器上。