为什么找不到getInputStream?

时间:2010-03-22 16:43:18

标签: java networking sockets

我有这段代码:

ServerSocket serverSideSocket = new ServerSocket(1234);
        serverSideSocket.accept();
        BufferedReader in = new BufferedReader(new InputStreamReader(serverSideSocket.getInputStream()));

编译器告诉我它无法找到“getInputStream”。我不懂为什么。在我的代码的开头,我导入了java.net.*

2 个答案:

答案 0 :(得分:8)

调用accept会返回Socket的必需方法getInputStream的实例。

代码可能如下所示:

ServerSocket serverSideSocket = new ServerSocket(1234);
Socket socket = serverSideSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

如何在java中使用套接字的好教程:http://java.sun.com/docs/books/tutorial/networking/sockets/index.html

答案 1 :(得分:0)

这是因为从概念上讲,ServerSocket不提供可用于发送和接收数据的直接连接对象。 ServerSocket是一种工具,您可以使用.accept()方法让它在所选端口上侦听并在客户端尝试连接时生成新的实际连接。

这就是为什么你无法从InputStream获得ServerSocket的原因。由于许多客户端可以连接到同一服务器,因此每个客户端都会使服务器套接字生成从Socket通过.accept()返回的新InputStream(即已打开的 TCP连接)您可以使用OutputStream和{{1}}发送和接收。