我觉得SWING和SOKECT两个就可以做个简单的聊天室了
是不是呢?
是不是呢?
解决方案 »
- 如何用java实现,1.白色的提示结账面,2.跟如何打印出来
- 如何从外部终止一个socket服务
- 求教 "显式" 的意思?
- 本人有一老帖50分(超链接在本帖,现无人回复,无法结贴!帮下忙,50分!
- java编译器检查内容(编译原理问题,高手请进)
- JAVA Compiler关于String类连接时的处理的新发现
- 能写入数据的流称为输出流
- 求大家帮忙看看这是哪儿的问题,我在书上基本上是原封不动抄下来的;但是编译出现了问题;出现如下情况:由于我是新手实在是没积分了,所以才在这个帖子上接着问问题的
- 初学JAVA,错误提示看不懂,郁闷~~~
- 谁有 VisualCafe Standard Edition 4.5的license或注册机
- 这个问题如何实现?请帮忙写出代码?
- [求助]新手求一 计算器原代码
java.net.*;
java.swing.*;
再加个java.io.*;吧。。随便你
io->流
swing->界面可以把消息封装成对象,通过对象流实现通信。
这个比较方便
import java.awt.event.*;
import java.net.*;
public class Chat
{
Frame f=new Frame("我的聊天室");
TextField tfIP=new TextField(15);
List lst=new List(6);
DatagramSocket ds;
public Chat()
{
try
{
ds=new DatagramSocket(3000);
}catch(Exception ex){ex.printStackTrace();}
new Thread(new Runnable()
{
public void run()
{
byte buf[]=new byte[1024];
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){e.printStackTrace();}
}
}
}).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();
try
{
DatagramPacket dp= new DatagramPacket(buf,buf.length,
InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
}
catch(Exception ex){ex.printStackTrace();}
((TextField)e.getSource()).setText("");
}
});
}
}
一个javabean,两个方法,一个display(),一个chat(),chat把客户端的信息保存在一个ArrayList里,display()只把这个ArrayList返回给jsp页面,然后列出来超级简单,代码不过二三十行