我正在尝试测试Oracle提供的Client / Server教程示例,并进行了一些小的调整。
理想情况下,我会将“打印内容”写入stdIn
客户端的BufferedReader中,并且服务器在接收到此字符串后将打印“客户端和服务器已连接!”。
我的代码编译了,看来连接成功了。但是,我的服务器目前不打印任何内容。
以下是我的客户代码:
public class myClient {
public static void main(String[] args) throws IOException {
String hostName = // my computer's local host name;
int portNumber = 4444;
try (
Socket clientSocket = new Socket(hostName, portNumber);
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
) {
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
// Tell server to print line "Client and server have connected!";
String fromServer;
String fromUser;
while ((fromServer = in.readLine()) != null) {
if (fromServer.equals("End"))
break;
fromUser = stdIn.readLine();
if (fromUser != null)
out.println(fromUser);
}
} catch (UnknownHostException e) {
System.err.println("Don't know host!");
System.exit(1);
} catch (IOException e) {
System.err.println("IO Exception caught!");
System.exit(1);
}
}
}
以下是我的服务器代码:
public class myServer {
public static void main(String[] args) throws IOException {
int portNumber = 4444;
try (
ServerSocket serverSocket = new ServerSocket(portNumber);
Socket clientSocket = serverSocket.accept();
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
) {
// if receieved string is "print stuff", print "Client and server have connected!";
String inputLine;
while ((inputLine = in.readLine()) != null) {
if (inputLine.equals("End"))
break;
// try to echo input stream - no output!
out.println(inputLine);
if (inputLine.equals("print stuff"))
out.println("Client and server have connected!");
}
} catch(IOException e) {
System.err.println("Exception caught while trying to listen to port!");
}
}
}
第一个错误是您的客户端在连接后等待服务器的输入,但是服务器不发送任何内容。因此,永远不会执行用户输入循环。
第二个错误是,只要您不输入“打印内容”,服务器就不会对客户端做出任何响应。因此,客户端再次等待服务器的输入,而等待用户的输入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句