Java Socket编程(三)服务器Sockets

2016-02-19 12:32 4 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐Java Socket编程(三)服务器Sockets,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

        服务器Sockets
  
  列表9.2是一个服务器应用程序的一部分.
  
  列表9.2 一个简单的服务器程序
  
  /**
  * 一个监听端口并提供Html文档的程序.
  */
  class SimpleWebServer {
  public static void main(String args[])
  {
  ServerSocket serverSocket = null;
  Socket clientSocket = null;
  int connects = 0;
  try
  {
  {
  // 建立一个服务器socket
  serverSocket = new ServerSocket(80, 5);
  while (connects 5)
  {
  // 等待连接
  clientSocket = serverSocket.accept();
  //服务连接
  ServiceClient(clientSocket);
  connects++;
  }
  serverSocket.close();
  }
  catch (IOException ioe)
  {
  System.out.println("Error in SimpleWebServer: " + ioe);
  }
  }
  public static void ServiceClient(Socket client)
  throws IOException
  {
  DataInputStream inbound = null;
  DataOutputStream outbound = null;
  try
  {
  // 得到IO流
  inbound = new DataInputStream( client.getInputStream());
  outbound = new DataOutputStream( client.getOutputStream());
  //格式化输出(回应头和很少的HTML文档)
  StringBuffer buffer = PrepareOutput();
  String inputLine;
  while ((inputLine = inbound.readLine()) != null)
  {
  //假如到了HTTP请求的尾部,就发送回应
  if ( inputLine.equals("") )
  {
  outbound.writeBytes(buffer.toString());
  break;
  }
  }
  }
  finally
  {
  // 清除
  System.out.println("Cleaning up connection: " + client);
  tln("Cleaning up connection: " + client);
  outbound.close();
  inbound.close();
  client.close();
  client.close();
  }
  }

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

服务器并不是主动地建立连接.相反地,他们是被动地监听一个客户端的连接请示然后给他们服务.服务器是由类ServerSocket来建立的.下面的程序建立了一个服务器端socket并把它绑定到80端口:
  
  ServerSocket serverSocket = new ServerSocket(80, 5);
  
  第一个参数是服务器要监听的端口.第二个参数是可选的.API文档中说明了这是一个监听时间,但是在传统的socket程序中第二个参数是监听深度.一个服务器可以同时接收多个连接请求,但是每次只能处理一个.监听堆是一个无回答的连接请求队列.上面的请求建立一个连接来处理最后五个请求.假如省略了后面的一个参数,则默认值是50.
  
  ServerSocket serverSocket = new ServerSocket(80, 5);
  
  一旦socket建立了并开始监听连接,进来的连接将会建立并放在监听堆.accetp()方法把在堆中的连接取出来.
  
  Socket clientSocket = serverSocket.accept();
  
  这个方法返回一个用来与来访者对话的客户端连接.服务器本身不可能建立对话,相反地,服务器socket会使用accept()方法来产生一个新的socket.服务器socket依旧打开并排列新的连接请求.
  
  与客户端socket一样,下面的一步建立输入和输出流:
  
  DataInputStream inbound = new DataInputStream( clientSocket.getInputStream() ); DataOutputStream outbound = new DataOutputStream( clientSocket.getOutputStream() );
  
  一般的I/O操作可以在新建的流中运用.在服务器回应前它等待客户端发送一个空白的行.当会话结束时,服务器关闭流和客户端socket.假如在队列中没有请示将会出现什么情况呢?

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1601135.html

延伸阅读
首先看下看下相对简单些的--向服务器发送一个包含有名/值对的简单查询串,在这种情况下XHP即可以用GET也可以用POST。 GET function doRequestUsingGET() { createXMLHttpRequest(); var queryString = " GetAndPostExample? " ; queryString = queryString + createQueryString()+ " &timeStamp= " + new Date().getTime(); ...
---- 摘要:在Java出现之前,编写多线程程序是一件烦琐且伴随许多不安全因素的事情。利用Java,编写安全高效的多线程程序变得简单,而且利用多线程和Java的网络包我们可以方便的实现多线程服务器程序。 ---- Java是伴随Internet的大潮产生的,对网络及多线程具有内在的支持,具有网络时代编程语言的一切特点。从Java的当前应用看...
标签: 服务器
服务器迁移服务器搬家教程   第一步:配置从属服务器,以下步骤(旧的服务器是192.168.1.105,新的192.168.1.200,例子) 1.这是新的服务器1.200的,添加子服务器的过程 到这里,从属服务器就搭起来了 。下面开始做转移,以转移192.168.1.0段为例。 2. 开始做转移任务。 在主服务器...
标签: Delphi
  3. 安装的软件项目 当你安装 InterBase SQL Link 驱动程序,下列项目将被安装于你的工作站上。 表 18.7 安装的文件名 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 项 目 描 述 ────────────────...
一.项目简介: Java语言是一种可移植的,简单的,健壮的嵌入式语言。并且对网络,数据库有很好的支持,基于JAVA语言的这种特性可以十分轻易地建立一个小型INTERNET服务器。!-- frame contents --   !-- /frame contents -- 本项目中,作者用JAVA语言编写了一个WEB微型服务器,对简单的HTTP请求进行响应,并通过后端数据库对用户...

经验教程

624

收藏

8
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部