java的serverthread,serverthread.java

import java.io.*;import java.net.*;import java.util.*;/** * @author yeeku.H.lee kongyeeku@163.com * @version 1.0 * Copyright (C), 2005-2008, yeeku.H.Lee * This program is protected by copyright laws. * Program Name: * Date: *///负责处理每个线程通信的线程类public class ServerThread implements Runnable {//定义当前线程所处理的SocketSocket s = null;//该线程所处理的Socket所对应的输入流BufferedReader br = null;public ServerThread(Socket s)throws IOException{this.s = s;//初始化该Socket对应的输入流br = new BufferedReader(new InputStreamReader(s.getInputStream()));}public void run(){try{String content = null;//采用循环不断从Socket中读取客户端发送过来的数据while ((content = readFromClient()) != null){//遍历socketList中的每个Socket,//将读到的内容向每个Socket发送一次for (Socket s : MyServer.socketList){PrintStream ps = new PrintStream(s.getOutputStream());ps.println(content);}}}catch (IOException e){//e.printStackTrace();}}//定义读取客户端数据的方法private String readFromClient(){try{return br.readLine();}//如果捕捉到异常,表明该Socket对应的客户端已经关闭catch (IOException e){//删除该Socket。MyServer.socketList.remove(s);}return null;}}

// 文件名: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> * @author 杜江 * @version 1.0 */ class moreServer { public static void main (String [] args) throws IOException { System.out.println ("Server starting...\n"); //使用8000端口提供服务 ServerSocket server = new ServerSocket (8000); while (true) { //阻塞,直到有客户连接 Socket sk = server.accept (); System.out.println ("Accepting Connection...\n"); //启动服务线程 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...\n"); //最后释放资源 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); } } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值