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

ICQ/即时通讯

开发平台:

Java

  1. package client;
  2. import java.awt.BorderLayout;
  3. import java.awt.Button;
  4. import java.awt.GridBagLayout;
  5. import java.awt.GridLayout;
  6. import java.awt.TextField;
  7. import java.awt.event.ActionEvent;
  8. import java.awt.event.ActionListener;
  9. import java.io.DataInputStream;
  10. import java.io.DataOutputStream;
  11. import java.io.File;
  12. import java.io.FileInputStream;
  13. import java.io.IOException;
  14. import java.io.ObjectInputStream;
  15. import java.io.ObjectOutputStream;
  16. import java.net.Socket;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.HashMap;
  20. import java.util.Iterator;
  21. import java.util.Properties;
  22. import javax.swing.JButton;
  23. import javax.swing.JFrame;
  24. import javax.swing.JPanel;
  25. import javax.swing.JScrollPane;
  26. import javax.swing.JTextArea;
  27. import com.sun.image.codec.jpeg.JPEGDecodeParam;
  28. import sun.awt.windows.ThemeReader;
  29. class client extends Thread {  
  30. int id;
  31. ObjectOutputStream dos; 
  32. //去往客户的输出流   
  33. ObjectInputStream din; 
  34. //来自客户的输入流   
  35. JFrame f;;   
  36.  JPanel panelx=new JPanel(); 
  37.     JPanel jp=new JPanel();
  38.   
  39. JTextArea input=new JTextArea(3,20);
  40.    
  41. JTextArea display=new JTextArea(4,20);   
  42.   JScrollPane js=new JScrollPane(display);
  43.   JScrollPane js1=new JScrollPane(input);
  44.    JButton b=new JButton("发送:");
  45. public client(int id,ObjectOutputStream oos,ObjectInputStream din)
  46. {   
  47. this.id=id;
  48. this.dos=oos;
  49. this.din=din; 
  50.  panelx.setLayout(new GridLayout(2,1,15,15));
  51.  
  52.  
  53.  
  54. f=new JFrame("client-"+serverthread.name);
  55.     
  56. panelx.add(js);
  57. panelx.add(js1); 
  58. jp.add(b);
  59. //f.add(jp);
  60. //f.add(jp1);
  61. //f.add(b);
  62.    f.add(panelx,BorderLayout.CENTER);
  63.    f.add(jp,BorderLayout.SOUTH);
  64. //f.add(panelx); 
  65. f.setSize(400,400);
  66.     
  67. f.setVisible(true);
  68. // this.start();
  69. b.addActionListener(new ActionListener(){
  70. public void actionPerformed(ActionEvent e) {     
  71. try{  
  72. ArrayList arr=new ArrayList();
  73. arr.add(input.getText());
  74.                  arr.add(serverthread.name);
  75. dos.writeObject(arr);
  76. display.append(new Date().toString()+serverthread.name+"n"+input.getText());
  77. //发送数据   
  78. input.setText("");
  79. catch(IOException z) 
  80. {
  81. }   
  82. }  
  83. );   
  84. }
  85. public void run() {
  86.         
  87.         
  88.   
  89.        
  90. //循环读取客户数据转发给其他客户  
  91. while(true) {    
  92. try{    
  93. Object oo=din.readObject();
  94. int m=serverthread.clientnum; 
  95. //读客户数据,无数据时线程将挂起     
  96.   
  97.    
  98.       
  99.  if(oo instanceof ArrayList){
  100. ArrayList user=(ArrayList)oo;
  101. display.append(new Date().toString()+user.get(1)+"n"+user.get(0).toString()+"n");
  102.    //  String message=user.get(0);
  103.    //  System.out.println(message);
  104.      
  105.      
  106. // client c=(client)serverthread.l.get(m-1);
  107. // c.dos.writeObject(user); 
  108. }
  109.   
  110. }
  111. catch(IOException e)
  112. {
  113. } catch (ClassNotFoundException e) {
  114. // TODO Auto-generated catch block
  115. e.printStackTrace();
  116. }
  117. }
  118. }
  119. }