如何识别服务器的输入是输入流还是输出流



我有一个ServerSocket,正在寻求帮助。
我想识别来自InputStreamOutputStream类型的客户端的请求。我被困在这一点上,期待你的帮助

ServerSocket servsock = new ServerSocket(13267);
while (true) {
System.out.println("Waiting...");
Socket sock = servsock.accept();
System.out.println("Accepted connection : " + sock);
InputStream is = sock.getInputStream();
new FileServer().receiveFile(is);
sock.close();
}

请告诉我如何将其放在条件语句中以提供进一步的执行

从服务器端,Socket(由接受客户端连接时由ServerSocket创建(允许从客户端读取(接收(流与输入流,并使用输出流向客户端写入(发送(流。

从客户端来看,它使用相同的逻辑。
Socket允许从具有输入流的服务器读取(接收(流,并使用输出流向服务器写入(发送(流。

在您的实际代码中:

Socket sock = servsock.accept();
InputStream is = sock.getInputStream();

在这里,您可以获得服务器的输入流。
有了它,您可以读取来自客户端的消息。
例如,读取客户端发送的字节(当然是读取行,使用更特色的阅读器(如BufferedReader(要好得多(:

int b = is.read();

要写入客户端一个字节,服务器可以执行以下操作:

OutputStream os = sock.getOutputStream();
os.write(oneByte);

在这里,与InputStream相同的备注:OutputStream只有原始方法来写入字节。
根据您的要求,使用特定的子类可能会更好。

您在甲骨文网站上有非常好的材料和示例: http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html

您需要从套接字读取以确定客户端套接字正在执行的操作。

例如。客户端发送 PUT 文件名

服务器从输入流中读取并将文件保存在文件服务器中

客户端发送 GET 文件名

服务器从输入流中读取文件名并将文件写入输出流

所以这取决于您选择的协议

相关内容

  • 没有找到相关文章

最新更新