java编写的网络聊天小程序

/**
*网络聊天工具
*左下角输入框输入对方的ip地址
*右下角输入框输入要发送的消息
*端口号:3000
*接收的消息在上方对话框中显示,新消息在上面
*/


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

class Chat extends Frame
{
List lst = new List(8); //最多显示六条
TextField tfIP = new TextField(13); //IP地址输入文本框
TextField tfData = new TextField(50); //定义输入消息文本框
DatagramSocket ds = null;

public Chat() {
try
{
ds = new DatagramSocket(3000);
}
catch (Exception e)
{
e.printStackTrace();
}
this.add(lst,"Center"); //增加列表框
Panel p = new Panel();
this.add(p,"South");

p.setLayout(new BorderLayout());
p.add(tfIP,"West"); //IP输入
p.add(tfData,"East"); //消息输入

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())+
" -->IP:"+dp.getAddress().getHostAddress()+" Port:"+dp.getPort(),0);
//新消息指定显示在第一行
//显示格式:消息from ip地址:端口号
}
catch (Exception e)
{
if(!ds.isClosed())
{
e.printStackTrace();
}
}
}
}
}).start();

tfData.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//取出消息及ip文本框中的内容
byte [] buf;
buf =tfData.getText().getBytes();
try
{
DatagramPacket dp = new DatagramPacket(buf,buf.length,
InetAddress.getByName(tfIP.getText()),3000);
ds.send(dp);
}
catch (Exception ex)
{
ex.printStackTrace();
}
//清空
tfData.setText("");
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
ds.close();
dispose();
System.exit(0);
}
});
}

public static void main(String args[])
{
System.out.println("Starting Chat……");
Chat mainFrame = new Chat();
mainFrame.setSize(500,500);
mainFrame.setTitle("迷你聊天——彭勇");
mainFrame.setVisible(true);
mainFrame.setResizable(false);
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值