服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

传输文本


  下面要做的是将文本从闲聊服务器传输到显示屏上。作这个工作
  最好的办法是应用thread。thread随套接口的打开和关闭而打开
  和关闭。thread能够同时读取相当大量的数据,在从套接口读取
  数据和更新textarea方面效率都很高。
  chat.java:
  
  
  import java.applet.applet;
  import java.awt.*;
  import java.net.socket;
  import java.io.inputstream;
  
  public class chat extends applet implements runnable {
  textarea ta;
  textfield tf;
  socket s;
  thread t;
  
  public void init() {
  ta = new textarea("",20,80);
  ta.seteditable(false);
  add(ta);
  
  tf = new textfield(80);
  add(tf);
  }
  
  public void start() {
  try {
  string host = getparameter("host");
  int port = integer.parseint(getparameter("port"));
  s = new socket(host,port);
  t = new thread(this);
  t.start();
  } catch(exception e) {
  ta.appendtext("applet error: "+e+"/n");
  }
  }
  
  public void stop() {
  try {
  t.stop();
  s.close();
  } catch(exception e) {
  ta.appendtext("applet error: "+e+"/n");
  }
  }
  
  public void run() {
  try {
  inputstream is = s.getinputstream();
  byte[] buf = new byte[200];
  
  while(true) {
  int avail = is.available();
  if(avail<1) avail=1;
  if(avail>buf.length) avail=buf.length;
  int bytes_read = is.read(buf,0,avail);
  ta.appendtext(new string(buf, 0, 0, bytes_read));
  }
  } catch(exception e) {
  system.err.print(e);
  }
  }
  
  public boolean handleevent(event e) {
  if(e.id==event.action_event && e.target==tf) {
  ta.appendtext(tf.gettext()+"/n");
  tf.settext("");
  return true;
  }
  return false;
  }
  
  }

扫描关注微信公众号