QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 707|回复: 2

用JAVA写的即时聊天程序>>请各路大哥帮下忙~~

[复制链接]
发表于 2004-12-13 13:24:40 | 显示全部楼层 |阅读模式
源程序:
import java.awt.*;
import java.awt.event.*;
import java.net.*;

public class Chat
{
        Frame f=new Frame("fish_liang聊天室");
        TextField tfIP=new TextField(15);

        List lst=new List(6);

       
        DatagramSocket ds;
        public Chat()
        {
                try
                {
                        ds=new DatagramSocket(6000);         
                }
                catch(Exception e)
                {
                        System.out.println("Socket初始化6000端口失败");
                }
                new Thread(new Runnable()
                {
                        public void run()
                        {
                                byte buf[]=new byte[1020];
                                DatagramPacket dp=new DatagramPacket(buf,1024);
                                 while(true)
                                 {
                                         try
                                         {
                                                 ds.receive(dp);
                                                 lst.add(new String(buf,0,dp.getLength())+":from"+dp.getAddress().getHostAddress(),0);
                                                
                                         }
                                         catch(Exception e)
                                         {
                                                 System.out.println("消息接收失败");
                                         }
                                  
                                 }
                        }       
                }).start();
        }
        public static void main(String args[])
        {
                Chat chat=new Chat();
                chat.init();
                 
        }
        public void init()
        {
                f.setSize(300,300);
                f.add(lst);
               
                Panel p=new Panel();
                p.setLayout(new BorderLayout());
                p.add("West",tfIP);
                TextField tfData=new TextField(20);
                p.add("East",tfData);
                f.add("South",p);
               
                f.setVisible(true);
                f.setResizable(false);
               
                //关闭窗口的事件处理代码
                f.addWindowListener(new WindowAdapter()
                {
                        public void windowClosing(WindowEvent e)
                        {
                                ds.close();
                                f.setVisible(false);
                                f.dispose();
                                System.exit(0);
                        }
                });
               
                //在消息文本框中按下回车键的事件处理代码
               
                tfData.addActionListener(new ActionListener()
                {
                        public void actionPerformed(ActionEvent e)
                        {
                                //网络消息发送相关程序代码
                               
                                byte[] buf;
                                buf=e.getActionCommand().getBytes();
                                DatagramPacket dp;
                                try
                                {
                                        dp=new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),6000);                               
                                        ds.send(dp);
                                }
                                catch(Exception ex)
                                {
                                        System.out.println("消息发送失败");
                                }
                                ((TextField)e.getSource()).setText(""); //用于数据发送后,清空文文本框原来的内容
                        }
                });
        }
}

-------------------------------------------------------------------------------------
运行后,发送消息出去,死表List无任何内容!!??
请各位大哥帮我看一下上面的代码,看看是哪里出错,还是怎么回事?!!
谢谢~~~~~~~~~~
等ING~~~~~~~~~~~~~
发表于 2004-12-13 14:02:07 | 显示全部楼层
不要把代码一贴了事,讲讲你的整个程序。
回复

使用道具 举报

发表于 2004-12-14 11:48:32 | 显示全部楼层
List lst=new List(6);

lst.add(new String(buf,0,dp.getLength())+":from"+dp.getAddress().getHostAddress(),0);

你的程序能编译成功?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 23:24 , Processed in 0.044220 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表