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
分享到:
相关推荐
在这个"UDP简单聊天程序示例"中,我们将探讨如何利用C#中的`UdpClient`类来实现一个简单的UDP聊天应用。 首先,我们要理解`UdpClient`类在.NET Framework中的作用。`UdpClient`是System.Net.Sockets命名空间下的一...
【基于UDP的聊天程序】 UDP(User Datagram Protocol,用户数据报协议)是互联网协议栈中的一个传输层协议,它提供了一种无连接、不可靠的数据传输服务。与TCP(Transmission Control Protocol,传输控制协议)相比...
【基于UDP的网络聊天程序客户端程序】 UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,相比TCP(Transmission Control Protocol,传输控制协议),UDP在速度和延迟方面具有...
**基于UDP的简单聊天程序** 在计算机网络编程中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,它不提供连接建立、数据确认和流量控制等服务,因此它比TCP(Transmission Control ...
【标题】:“基于UDP的局域网聊天程序” 在计算机网络通信中,用户数据报协议(UDP)是一种无连接的、不可靠的传输层协议,它提供了简单的数据发送和接收功能,无需建立连接过程,因此在实时应用或者对速度有较高...
"安卓基于UDP的简易聊天程序源码" 指的是一个使用Android平台开发的简单聊天应用程序,其通信机制是基于用户数据报协议(UDP)。UDP是一种无连接的、不可靠的传输协议,它在互联网协议栈中位于传输层,适合于实时...
【标题】:“模拟QQ的UDP局域网聊天程序”是一个基于Java编程语言开发的简易通讯应用,旨在模拟QQ的基本功能,让用户在局域网内实现简单的信息交流。该程序利用了UDP(User Datagram Protocol)协议,这是一种无连接...
使用UDP协议编写聊天软件,使得客户端之间可以自由地进行键盘聊天。 程序的具体要求: 1)在DOS下运行,能提供聊天内容输入界面和收到的文字聊天内容。 2)允许客户选择不同的其他客户方进行聊天,由于在一台机器上...
UDP聊天程序是网络通信中的一个基础应用,它利用了用户数据报协议(UDP)进行数据传输。本项目是一个简单的C#实现,旨在提供一个类似QQ的聊天体验,尽管功能相对有限,但足以展示多线程和套接字编程的核心概念。 ...
【Android UDP网络传输聊天程序】是一个使用用户数据报协议(UDP)进行通信的项目,它由两个部分组成:一个在个人计算机(PC)上运行的服务端,由Java编写,以及一个在Android智能手机上运行的客户端。这个程序展示...
在这个场景中,我们关注的是一个使用C#编程语言编写的基于UDP(用户数据报协议)的多人聊天系统。UDP是一种无连接的、不可靠的传输层协议,它允许快速发送数据但不保证数据的顺序或完整性。C#提供了一个强大的.NET ...
【基于VB的UDP聊天程序】是一个使用Visual Basic(VB)编程语言实现的网络通信应用,主要利用了用户数据报协议(UDP)进行数据传输。UDP是传输层的一种无连接协议,相比TCP,它不保证数据的可靠传输,但具有更高的...
在本文中,我们将深入探讨如何使用VC++和UDP(用户数据报协议)来构建一个简单的聊天程序。UDP是一种无连接的、不可靠的传输层协议,适合于对实时性要求较高但对数据完整性要求较低的应用场景,如在线游戏、视频通话...
【标题】:“基于UDP的聊天...这个基于UDP的聊天程序尽管功能简单,但对于初学者来说,它是理解网络编程和MFC应用开发的一个好起点。通过分析和改进这个项目,可以学习到更多关于网络通信、UI设计和多线程编程的知识。
在"用vb编写的UDP无连接聊天程序"中,我们可以学到以下关键知识点: 1. UDP协议基础: - UDP的特点:无连接、不可靠、无序传输。这意味着数据包可能会丢失、重复或乱序到达,但其传输速度快,适合实时应用,如在线...
标题"用C# UDP协议开发的局域网聊天程序"指的是一个基于C#编程语言,利用用户数据报协议(UDP)来实现的局域网内的即时通讯应用。UDP是一种无连接的传输层协议,常用于对实时性要求较高的应用场景,如在线游戏、视频...
【标题】:“简单的Udp聊天程序” 【描述】:“简单的udp聊天程序是使用VC++开发的一个Win32应用程序。在计算机网络中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,常用于...