[英]Java socket connection
我试图在Java中测试套接字连接,但失败了。 这是我的代码(两个简单的应用程序,服务器和客户端):
public class TestServer {
public static void main(String args[]) throws IOException {
ServerSocket serverSocket = new ServerSocket(1111);
System.out.println("Server socket created");
Socket socket = serverSocket.accept();
System.out.println("Socket accepted");
PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
System.out.println("Output created");
output.write("Output string");
socket.close();
serverSocket.close();
}
}
public class TestClient {
public static void main(String args[]) throws IOException {
Socket socket = new Socket("127.0.0.1", 1111);
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("Input: " + input.readLine());
socket.close();
}
}
输出是(在运行服务器之后,在它之后,客户端):
Server socket created
Socket accepted
Output created
Input: null
我不知道问题是什么以及为什么客户端没有收到发送给它的字符串。 我很感激任何帮助。
通常当我使用类PrintWriter或OutputStream时,我需要刷新其内容以通过套接字发送数据或将其写入文件。
input.readLine
需要输入字符串中的换行符。 尝试更换output.write
与output.println
。
我现在只是测试它,它应该像这样正常工作。
除了所有其他注释之外,您不应该关闭套接字本身,应该关闭在套接字输出流周围创建的最外面的输出流。 那会:
(a)刷新输出流(b)关闭它(c)关闭输入流,(d)关闭插座。
//Put the line
output.flush();
//in the end of the TestServer.java
//and in the TestClient.java I have used the code as given below
Socket socket = new Socket("127.0.0.1", 1111);
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String str;
while((str=input.readLine())!=null){
System.out.println("Input: " + str);
}
socket.close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.