首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > Java > [java]数组声明引发聊天室小程序无法运行
【标  题】:[java]数组声明引发聊天室小程序无法运行
【关键字】:java
【来  源】:http://blog.csdn.net/mildo/archive/2006/10/31/1358958.aspx

[java]数组声明引发聊天室小程序无法运行

     这是一段经典的聊天室实现代码,通过DatagramSocket和DatagramPacket来发送和接受数据,使用的是UDP网络协议,程序出错的原因是声明的字符型数组 byte []buf ;在后面不可以使用,提示找不到字符,我输入buf.也并没有参数提示。奇怪,不得其解!

 

程序清单 Chat.java

import java.awt.*;
import java.awt.event.*;
import java.net.*;

/**
 * 一个小型聊天室的实现
 
*/

 
 
public class Chat
 
{
     Frame f 
= new Frame("我的聊天室");
     TextField tfIP 
= new TextField(15); //15为行列
     List ls = new List(6);
     DatagramSocket ds;
     
/*由于DatagramSocket的构造函数可能抛出异常,我们程序需要用try...catch扑获异常
      *所以不能直接在这里调用DatagramSocket的构函对ds进行初始化,我们需要将ds的初始化放在Chat
      *类里面去初始化
      
*/

      
public Chat()
      
{
          
try
          
{
              ds 
= new DatagramSocket(3000);
          }

          
catch(Exception e){};
          
          
new Thread(new Runnable()
          
{
              
public void run()
              
{
                  
byte [] buf = new byte[1024];
                  DatagramPacket dp1 
= new DatagramPacket(buf,1024);
                  
while(true)
                  
{
                      
try
                      
{
                         ds.receive(dp1);
                         String strRecv 
= new String(buf,dp1.getLength())+" from "+
                             dp1.getAddress().getHostAddress();
                         ls.add(strRecv,
0);
                      }

                      
catch(Exception e)
                      
{
                          e.printStackTrace();
                      }

                  }

              }

          }

          ).start();
      }

     
     
public static void main(String[] args)
     
{
         Chat chat 
= new Chat();
         chat.init();
     }

     
     
public void init()
     
{
         f.setSize(
400,400);
         f.add(ls);
         
         Panel panel 
= new Panel();
         panel.setLayout(
new BorderLayout());
         panel.add(
"East",tfIP); //添加组件
         TextField tfData = new TextField(20);
         f.add(
"South",tfData);
         f.setVisible(
true);
         f.setResizable(
false); //限制用户改变窗口大小
         
         
//增加关闭窗口的事件处理代码
         f.addWindowListener(new WindowAdapter()
         
{
             
public void windowClosing(WindowEvent e)
             
{
                 ds.close(); 
//关闭socket
                 f.setVisible(false);
                 f.dispose();
                 System.exit(
0); //退出系统
             }

         }
);
         
         
//增加在文本框输入值按下回车键的响应代码
         tfData.addActionListener(new ActionListener()
             
{
                 
public void actionPerformed(ActionEvent e)
                 
{
                     
//取出文本中的字符,并将其转换成字符数组
                     byte buf[];
                     buf 
= e.getActionCommand().getBytes();
                     
//程序错误处,编译提示无法找到符号 buf
                     DatagramPacket dp = new DatagramPacket(buf,buf.length,
                         InetAddress.getAllByName(tfIP.getText()),
3000);
                     
try
                     
{
                         ds.send(dp);
                     }

                     
catch(Exception ex) //这里用ex代替e,因为e已经被使用了
                     {
                         ex.printStackTrace(); 
                     }

                     
//清空发送数据后的文本框
                     ((TextField)e.getSource()).setText("");
                 }

             }
);
     }

 }
 
JSF如何实现onblur后的复杂校验逻辑:【上一篇】
状态会话Bean和无状态会话Bean的区别:【下一篇】
【相关文章】
  • java中的日期和时间处理示例
  • 使用Java操作文本文件的方法详解
  • 我来了 我是java的初学者
  • JavaScript中的Boolean,你了解多少?
  • java web 分页管理器
  • [java]关于IO文件代码读取的注意事项
  • 一本你肯定可以读懂的Java图书
  • JAVA面试题最全集(5)
  • CTO教你解决在多个容器上部署 Java Web 服务的问题
  • Java 编程规范
  • 【随机文章】
  • 出人头地、光宗耀祖,都不是那么回事
  • 商务智能,SQL2005与职业的转型
  • AIX下如何在系统之间迁移用户信息
  • Eclipse下plugin插件安装
  • 发行版发布: Ubuntu Christian Edition 1.5
  • 11.3 使用Authorware 决策图标(3)
  • 在RHEL AS4 下安装Bind 9.3.3
  • Windows XP鲜为人知的漏洞
  • 菜鸟狂超频,主板命归西
  • c/c++内存分配
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.