import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.net.*;
/*
* 用UDP编写的聊天程序
*/
public class UDPChat {
Frame f = new Frame("我的聊天室");
TextField tfIP = new TextField(15);
/*
tfd是用于输入IP地址的文本框,在发送数据时,要取出其中的IP地址,
所以将其定义成为变量,以便发送消息的程序代码访问
*/
List lt = new List(6);
/*
lt是用于显示接受消息的列表框,在接受到数据时,
要向其中增加新的记录项,所以将其定义为成员变量,
以便接收消息程序代码访问
*/
DatagramSocket ds;
/*
* 由于DatagramSocket的构造函数声明可能抛出异常,我们的程序需要用try...catch语句
* 进行异常捕获处理,所以不能直接在这里调用DatagramSocket的构造方法对ds进行初始化,
* 我们需要将ds的初始化放在Chat类的构造方法中去完成。
*/
public UDPChat(){
try{
ds = new DatagramSocket(3000);
}catch(Exception e){
e.printStackTrace();
}
new Thread(new Runnable(){
public void run(){
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
while(true){
try{
ds.receive(dp);
lt.add(new String(buf,0,dp.getLength())+":from"+dp.getAddress().getHostAddress(),0);
}catch(Exception e){
e.printStackTrace();
}
}
}
}).start();
}
public static void main(String[] args){
UDPChat chat = new UDPChat();
chat.init();
}
public void init(){
f.setSize(300,300);
f.add(lt);
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(){
@SuppressWarnings("unused")
public void windowCloseing(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();
try {
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName(tfIP.getText()),3000);
try {
ds.send(dp);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//下面的语句用于数据发送后,清空文本框中原来的内容
((TextField)e.getSource()).setText("");
}
});
}
}
- 大小: 3.7 KB
分享到:
相关推荐
演示了如何使用UdpClient进行UDP聊天的例子,好久没用Socket通讯了,有点忘记了,特此上传备忘。
基于UDP聊天程序,基于UDP的聊听程序
一个非常好的基于UDP的网络聊天程序客户端程序
使用UDP协议编写聊天软件,使得客户端之间可以自由地进行键盘聊天。 程序的具体要求: 1)在DOS下运行,能提供聊天内容输入界面和收到的文字聊天内容。 2)允许客户选择不同的其他客户方进行聊天,由于在一台机器上...
一个AndroidUDP网络传输聊天程序,服务端为java编写,用于PC;客户端为Android编写,用于Phone。
用C++写的一个局域网聊天程序,包括服务端和客户端
此程序是我在学java时,模拟QQ的样子,写的一个局域网聊天程序,现在传到网上来,以供大家参阅,只是这个程序不能多个人同时给一个用户发信息,这是最初时我的数据库表没有设计好.
vc++用UDP实现的一个简单的聊天程序 两个源程序,一个发送端,一个接受端。 简单实用
计算机网络课程设计报告-基于UDP协议的聊天程序.doc 一、问题描述 本课程设计是是基于UDP协议的网络聊天程序设计,UDP协议是无连接的协议,是TCP/IP协议的一种分层协议。通过本设计进一步掌握利用Visual C++进行程序...
源代码,客户端与服务器端,就是这样子的啦
一个基于VB开发环境的UDP聊天程序 有点对点的聊天方式也可以进行同一网段的IP 进行聊天室的方式聊天,内附课设报告和任务书
用C#写的基于UDP的聊天系统,能实现多台电脑聊天,没有服务器
精彩编程与编程技巧-在VB中利用UDP协议编写聊天程序 ...
类似QQ聊天,但功能没QQ强大,运用了多线程,套接字等知识
通过UDP协议实现聊天,简单,易懂。程序只编写了一个大概,还有很多需要完善的地方,比如:IP地址的输入,读者自己可以修改。
利用VS2008编写的基于UDP的一个聊天软件,用MFC实现,虽然功能比较简单,不过还是挺有用的。
用vc编写的基于TCP和UDP的聊天程序
如何利用UDP协议开发多点聊天室程序。首先应在不同的计算机中运行聊天室服务程序,然后打开相应的客户发送端窗体,在客户发送端窗体的文本框中输入与之聊天的计算机IP,然后在“发送聊天信息”文本框中输入聊天信息...
用c写的一个基于UDP的简单字符界面的聊天程序,附带解释说明的word文档。