client_zhuce.java.svn-base
上传用户:hongdaled
上传日期:2007-10-03
资源大小:680k
文件大小:2k
源码类别:

ICQ/即时通讯

开发平台:

Java

  1. package server;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.io.ObjectOutputStream;
  8. import java.net.ServerSocket;
  9. import java.net.Socket;
  10. import java.util.HashMap;
  11. public class client_zhuce extends Thread{
  12. ObjectInputStream  dos; 
  13. //去往客户的输出流   
  14. ObjectInputStream din; 
  15.   ServerSocket ss; 
  16. //来自客户的输入流   
  17. ObjectOutputStream oos;
  18. HashMap set=new HashMap();
  19. public client_zhuce()
  20. {    
  21. }
  22. public void run() {
  23. //循环读取客户数据转发给其他客户  
  24.  ObjectInputStream ois;
  25.  Socket s2;
  26. try {
  27. this.din = new ObjectInputStream(new FileInputStream("c:\user_info.txt"));
  28.   this.oos=new ObjectOutputStream(new FileOutputStream("c:\user_info.txt"));
  29. this.ss=new ServerSocket(8888);
  30. s2=ss.accept();
  31.        this.dos =new ObjectInputStream(s2.getInputStream());
  32.         
  33.          
  34. } catch (FileNotFoundException e1) {
  35. // TODO Auto-generated catch block
  36. e1.printStackTrace();
  37. } catch (IOException e1) {
  38. // TODO Auto-generated catch block
  39. e1.printStackTrace();
  40. }
  41.        
  42. while(true) {    
  43. try{
  44. Object message=din.readObject();  
  45. qq_user user;
  46. while(message!=null){
  47. user =(qq_user)message;
  48. set.put(user.name, user);
  49.     message=din.readObject();
  50. //读客户数据,无数据时线程将挂起    
  51.   
  52.     
  53. }
  54. Object oo=dos.readObject();
  55. user=(qq_user)oo;
  56. set.put(user.name, user);
  57. Object[] arr=set.keySet().toArray();
  58. for(int j=0;j<arr.length;j++){
  59. oos.writeObject(set.get(arr[j]));
  60. }
  61. }
  62. catch(IOException e)
  63. {
  64. } catch (ClassNotFoundException e) {
  65. // TODO Auto-generated catch block
  66. e.printStackTrace();
  67. }  
  68. }
  69. }