[JAVA100例]044、多线程服务器:每个人都有份

王朝java/jsp·作者佚名  2008-05-31
宽屏版  字体: |||超大  

// 文件名:moreServer.Java

import java.io.*;

import java.net.*;

import java.util.*;

/**

* <p>Title: 多线程服务器</p>

* <p>Description: 本实例使用多线程实现多服务功能。</p>

* <p>Copyright: Copyright (c) 2003</p>

* <p>Filename: </p>

* @version 1.0

*/

class moreServer

{

public static void main (String [] args) throws IOException

{

System.out.println ("Server starting...

");

//使用8000端口提供服务

ServerSocket server = new ServerSocket (8000);

while (true)

{

//阻塞,直到有客户连接

Socket sk = server.accept ();

System.out.println ("Accepting Connection...

");

//启动服务线程

new ServerThread (sk).start ();

}

}

}

//使用线程,为多个客户端服务

class ServerThread extends Thread

{

private Socket sk;

ServerThread (Socket sk)

{

this.sk = sk;

}

//线程运行实体

public void run ()

{

BufferedReader in = null;

PrintWriter out = null;

try{

InputStreamReader isr;

isr = new InputStreamReader (sk.getInputStream ());

in = new BufferedReader (isr);

out = new PrintWriter (

new BufferedWriter(

new OutputStreamWriter(

sk.getOutputStream ())), true);

while(true){

//接收来自客户端的请求,根据不同的命令返回不同的信息。

String cmd = in.readLine ();

System.out.println(cmd);

if (cmd == null)

break;

cmd = cmd.toUpperCase ();

if (cmd.startsWith ("BYE")){

out.println ("BYE");

break;

}else{

out.println ("你好,我是服务器!");

}

}

}catch (IOException e)

{

System.out.println (e.toString ());

}

finally

{

System.out.println ("Closing Connection...

");

//最后释放资源

try{

if (in != null)

in.close ();

if (out != null)

out.close ();

if (sk != null)

sk.close ();

}

catch (IOException e)

{

System.out.println("close err"+e);

}

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有