ClinentChat.java

原创 2007年10月05日 22:48:00

package chatroom;
import java.applet.*;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.util.Hashtable;
//实现runnable接口,实现多继承。要实现Runnable的run方法,不能直接创建runnable类来运行,必须借助thread类
public class ClinentChat extends Applet implements Runnable {
 //变量申明
 Socket socket=null;
 DataInputStream in=null;
 DataOutputStream out=null;
 InputNameTextField submit=null;
 ChatArea chatSpace=null;
 Hashtable listTable;
 Label  tishi=null;
 Panel north,center;
 Thread thread;//用来运行runnable对象
 //初始化工作
 public void init(){
  setSize(800,400);
  int width=getSize().width;
  int height=getSize().height;
  listTable =new Hashtable();
  setLayout(new BorderLayout());
  submit =new InputNameTextField(listTable);
  int h=submit.getSize().height;
  chatSpace=new ChatArea("",listTable,width,height-(h+5));
  chatSpace.setVisible(false);
  tishi=new Label("正在连接到服务器,请稍等...",Label.CENTER);
  tishi.setForeground(Color.red);
  north=new Panel(new FlowLayout(FlowLayout.LEFT));
  center=new Panel();
  north.add(submit);
  north.add(tishi);
  center.add(chatSpace);
  add(north,BorderLayout.NORTH);
  add(center,BorderLayout.CENTER);
  validate();//??
 }
 //
 public void start(){
  //清除以前的套接字连接
  if(socket!=null&&in!=null&&out!=null){
   try{
    socket.close();
   }catch(Exception e){
   }
  }
  //与服务器套接字建立连接
  try{
   socket =new Socket(this.getCodeBase().getHost(),6666);//??
   in=new DataInputStream(socket.getInputStream());
   out=new DataOutputStream(socket.getOutputStream());
   }catch(IOException e){
    tishi.setText("连接失败");
   }
  //如果套接字连接成功,提示用户登录
  if(socket!=null){
   InetAddress address=socket.getInetAddress();
   tishi.setText("连接"+address+"成功");
   submit.setSocketConnection(socket,in,out);
   north.validate();
  }
  //为该用户启动一个新线程
  if(thread==null){
   thread=new Thread(this);
   thread.start();
  } 
 }
 //
 public void stop(){
  try{
   socket.close();
   thread=null;
  }catch(IOException e){
   this.showStatus(e.toString());
   
  }
 }
    //
 public void run(){
  while(thread!=null){
   if(submit.getCanChat()==true){
    chatSpace.setVisible(true);
    chatSpace.setName(submit.getName());
    chatSpace.setSocketConnection(socket,in,out);
    tishi.setText("祝聊天愉快!");
    center.validate();
    break;
   }
   try{
    Thread.sleep(100);
   }catch(Exception e){}
  }
 }
}
 
 
 
 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java 设计模式 其一 单例模式

单例模式转载出处(侵删) http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html 有的时候,我们在全局中,为了不制造多个实例,避...

JAVA3D安装程序

java入门常识——第一天

此笔记是本人在0基础学习过程中整理的笔记,这是第一天

java线程池简介

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 new...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)