科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道传输文本

传输文本

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  下面要做的是将文本从闲聊服务器传输到显示屏上。作这个工作   最好的办法是应用thread。thread随套接口的打开和关闭而打开   和关闭。thread能够同时读取相当大量的数据,在从套接口读取   数据和更新TextArea方面效率都很高。

作者:中国IT实验室 来源:中国IT实验室 2007年9月26日

关键字: 编程 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;
  }
  
  }
  
  

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件