Java Socket编程(三)服务器Sockets

taigang08

taigang08

2016-02-19 12:32

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

        服务器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://m.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://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

Java Socket编程(三)服务器Sockets

编程语言 网络编程
Java Socket编程(三)服务器Sockets

Java Socket编程(五)简单的WEB服务器

编程语言 网络编程
Java Socket编程(五)简单的WEB服务器

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Java服务器端编程安全必读

Java JAVA基础
Java服务器端编程安全必读

Java Socket编程

编程语言 网络编程
Java Socket编程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

运行headless Java服务器

编程语言 网络编程
运行headless Java服务器

ASP服务器组件编程心得

ASP
ASP服务器组件编程心得

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux 和 Unix 安全编程:环境变量

Linux 和 Unix 安全编程:环境变量

爱情就像烟花 - QQ伤感分组

爱情就像烟花 - QQ伤感分组
下拉加载更多内容 ↓