如何识别服务器的输入是 InputStream 还是 Output stream
How to identify the input for the server is of InputStream or Output stream
我有一个 ServerSocket
正在寻求帮助。
我想识别来自类型 InputStream
或 OutputStream
的客户端的请求。我坚持这一点,期待您的帮助
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();
}
请告诉我如何将它放在条件语句中以提供进一步的执行
您需要从套接字中读取以确定客户端套接字正在执行的操作。
例如。客户端发送 PUT 文件名
服务器从输入流中读取文件并将文件保存在文件服务器中
客户端发送 GET 文件名
服务器从输入流中读取文件名并将文件写入输出流
所以这取决于您选择的协议
从服务器端,Socket
(在接受客户端连接时由 ServerSocket
创建)允许使用输入流从客户端读取(接收)流并写入(发送) ) 与输出流一起流到客户端。
从客户端来看,它使用相同的逻辑。
Socket
允许使用输入流从服务器读取(接收)流,并使用输出流将流写入(发送)到服务器。
在您的实际代码中:
Socket sock = servsock.accept();
InputStream is = sock.getInputStream();
这里获取服务器的输入流
有了它你可以读取来自客户端的消息。
例如读取客户端发送的一个字节(当然是读取行,使用更有特色的reader比如BufferedReader
会更好):
int b = is.read();
要向客户端写入一个字节,服务器可以这样做:
OutputStream os = sock.getOutputStream();
os.write(oneByte);
在这里,与 InputStream
相同的注释:OutputStream
只有写入字节的原始方法。
根据您的要求,使用特定的子类可能会更好。
Oracle 站点上有很好的资料和示例:
http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html
我有一个 ServerSocket
正在寻求帮助。
我想识别来自类型 InputStream
或 OutputStream
的客户端的请求。我坚持这一点,期待您的帮助
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();
}
请告诉我如何将它放在条件语句中以提供进一步的执行
您需要从套接字中读取以确定客户端套接字正在执行的操作。
例如。客户端发送 PUT 文件名
服务器从输入流中读取文件并将文件保存在文件服务器中
客户端发送 GET 文件名
服务器从输入流中读取文件名并将文件写入输出流
所以这取决于您选择的协议
从服务器端,Socket
(在接受客户端连接时由 ServerSocket
创建)允许使用输入流从客户端读取(接收)流并写入(发送) ) 与输出流一起流到客户端。
从客户端来看,它使用相同的逻辑。
Socket
允许使用输入流从服务器读取(接收)流,并使用输出流将流写入(发送)到服务器。
在您的实际代码中:
Socket sock = servsock.accept();
InputStream is = sock.getInputStream();
这里获取服务器的输入流
有了它你可以读取来自客户端的消息。
例如读取客户端发送的一个字节(当然是读取行,使用更有特色的reader比如BufferedReader
会更好):
int b = is.read();
要向客户端写入一个字节,服务器可以这样做:
OutputStream os = sock.getOutputStream();
os.write(oneByte);
在这里,与 InputStream
相同的注释:OutputStream
只有写入字节的原始方法。
根据您的要求,使用特定的子类可能会更好。
Oracle 站点上有很好的资料和示例: http://docs.oracle.com/javase/tutorial/networking/sockets/clientServer.html