繁体   English   中英

Java套接字连接

[英]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.writeoutput.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM