当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:13:00  来源:本站整理

Java网络编程从入门到精通(26):在服务端采取和发送数据[Java编程]

赞助商链接



  本文“Java网络编程从入门到精通(26):在服务端采取和发送数据[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

在成立完ServerSocket对象后,通过accept办法返回的Socket对象,服务端便可以和客户端举行数据交互.

Socket类和ServerSocket类都有两个得到输入输出流的办法:getInputStream和getOutputStream.关于Socket类而言,利用getInputStream办法得到的InputStream是从服务端获得数据,而getOutputStream办法得到的OutputStream是向服务端发送数据.而ServerSocket的getInputStream和getOutputStream办法也近似.InputStream从客户端读取数据,OutputStream向客户端发送数据.下面的代码是一个接纳HTTP恳求,并返回HTTP恳求头信息的程序,它演示了ServerSocket类若何读取和发送来自客户端的数据.

package server;
import java.net.*;
import java.io.*;
public class HttpEchoServer extends Thread
{
     private Socket socket;
     public void run()
     {
         try
         {
             InputStreamReader isr = new InputStreamReader(socket
                             .getInputStream());
             BufferedReader br = new BufferedReader(isr);
             OutputStreamWriter osw = new OutputStreamWriter(socket
                             .getOutputStream());
             osw.write("HTTP/1.1 200 OK\r\n\r\n");
             String s = "";
             while (!(s = br.readLine()).equals(""))
                 osw.write("<html><body>" + s + "<br></body></html>");
             osw.flush();
             socket.close();
         }
         catch (Exception e)
         {
         }
     }
     public HttpEchoServer(Socket socket)
     {
         this.socket = socket;
     }
     public static void main(String[] args) throws Exception
     {
         ServerSocket serverSocket = new ServerSocket(8888);
         System.out.println("服务器已经启动,端口:8888");
         while (true)
         {
             Socket socket = serverSocket.accept();
             new HttpEchoServer(socket).start();
         }
     }
}

编译并运行HttpEchoServer后,在IE的地址栏中输入URL:http://localhost:8888.输出后果如图1所示.

图1

上面的代码并未考证HTTP恳求范例,因此,GET、POST、HEAD等HTTP恳求都可以得到回应.在接纳客户端恳求后,只向客户端输出了一行HTTP呼应头信息(包含呼应码和HTTP版本号),关于HTTP呼应头来说,这一行是必须有的,其他的头字段都是可选的.上面的代码每读一行恳求头信息,就向客户端写一行呼应信息.最后利用了flush办法将输出缓冲区中的内容发送的客户端.这是必须的,只要利用OutputStream,在最后就必必要调用flush办法(在Socket类中利用OutputStream也是一样).


  以上是“Java网络编程从入门到精通(26):在服务端采取和发送数据[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .