如何在servlet和套接字之间建立连接

时间:2014-04-24 15:11:44

标签: java servlets websocket

假设我有一个servlet,它读取和写入一个文件到socket,我想在servlet和socket之间建立连接,怎么办呢?

好吧,对于一个套接字,我读到的地方只需要这样做:

URL url  = new URL("http://example.com/getFile");
URLConnection con = url.openConnection();
con.setDoOutput(true);

我怎么能为servlet做同样的事情?

我想这样做,因为我将在servlet和scoket之间发送和接收文件。另外,他们如何知道对方何时发送了一个文件并应该读取它?

我搜索了这个,但找不到任何解释它的网站。

2 个答案:

答案 0 :(得分:0)

我不确定你是什么意思' Socket'。如果套接字是标准协议(http / https / ftp),那么您可以像在独立程序中一样使用Servlet中的上述代码。
如果您的套接字没有规定任何标准,那么您可能希望使用下面的代码打开直接连接:

Socket socket = new Socket(server,port);
//Get an input stream from the socket
BufferedReader inputStream = 
     new BufferedReader(new InputStreamReader(
                     socket.getInputStream()));

//Get  an output stream to the socket.  Note
// that this stream will autoflush.
PrintWriter outputStream = 
     new PrintWriter(new OutputStreamWriter(
               socket.getOutputStream()),true);
outputStream.println("send_ data");
      System.out.println(inputStream.readLine());
      socket.close();

关于文件发送代码,如果涉及的主要任务是文件传输,您可以使用FTP协议在servlet和套接字之间发送文件。
你可以在套接字端有一个文件监视器来知道何时传输文件。有关详细信息,请参阅filewatcherftp

答案 1 :(得分:0)

你混淆了它看起来像的servlet和套接字。区别在于:

  • 套接字用于网络中两点之间的低级通信。低级别我的意思是你基本上通过套接字发送你想要的任何二进制数据并接收一些数据。为了建立连接,应该有ServerSocket等待连接和客户端套接字建立与服务器套接字的连接。
  • Servlet是J2EE抽象。 Servets用于Web应用程序容器中,并且在某些协议(大多数情况下为HTTP)之上工作。虽然Web服务器在内部使用套接字,但Servlet不能使用套接字。 Servlet可与RequestResponse个对象一起使用。您的servlet负责处理用户请求并形成响应。