为什么找不到getInputStream?
问题描述:
我有这样的代码:为什么找不到getInputStream?
ServerSocket serverSideSocket = new ServerSocket(1234);
serverSideSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(serverSideSocket.getInputStream()));
而编译器写信给我,它无法找到“的getInputStream”。我不懂为什么。在我的代码的开始处,我输入java.net.*
。
答
调用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
答
这是因为概念上ServerSocket
不提供可用于直接连接对象发送和接收数据。 A ServerSocket
是一种工具,您可以与.accept()
方法一起使用,让它在选定端口上侦听并在客户端尝试连接时生成新的真实连接。
这就是为什么你不能从ServerSocket
得到InputStream
。由于许多客户端可以连接到同一台服务器,因此每个客户端都将生成一个新的Socket
(即打开的TCP连接),该服务器从.accept()
返回,通过它可以使用其InputStream
和OutputStream
进行发送和接收。
http://java.sun.com/j2se/1.4.2/docs/api/java/net/ServerSocket.html#accept() – 2010-03-22 16:47:14
那么,阅读文档再次失去了风格? – Bombe 2010-03-22 16:53:24