import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import java.text.*;
public class Test extends JFrame{
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JLabel lb1=new JLabel();
JLabel lb2=new JLabel("for ligson");
JLabel lb3=new JLabel("IPAddress:");
JLabel lb4=new JLabel("ChatInfo:");
java.awt.List lst=new java.awt.List(10);
JTextField tfIP=new JTextField(15);
JTextField tfInfo=new JTextField(6);
DatagramSocket ds;
Test(){
try{
ds=new DatagramSocket(9999);
}catch(IOException e){
e.printStackTrace();
}
this.setVisible(true);
this.setBounds(200,200,300,400);
//this.setBackground(Color.GREEN);
this.add(p1,"North");
this.add(p2,"South");
this.add(lst,"Center");
this.setTitle("MyChat");
p1.setLayout(new GridLayout(1,2));
p2.setLayout(new GridLayout(2,2));
p1.add(lb1);
p1.add(lb2);
p2.add(lb3);
p2.add(lb4);
p2.add(tfIP);
p2.add(tfInfo);
/*lst.setBackground(Color.BLACK);
lst.setForeground(Color.GREEN);
tfIP.setBackground(Color.BLACK);
tfIP.setForeground(Color.GREEN);
tfInfo.setBackground(Color.BLACK);
tfInfo.setForeground(Color.GREEN);*/
this.pack();
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
tfInfo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
try{
String ssInfo=tfInfo.getText();
byte[] buf=ssInfo.getBytes();
String sip=tfIP.getText().trim();
String name=InetAddress.getLocalHost().getHostName();
if(ipTest(sip)&&(ssInfo!=" ")){
InetAddress iip=InetAddress.getByName(sip);
DatagramPacket dp=new DatagramPacket(buf,0,buf.length,iip,9999);
ds.send(dp);
String sInfo=dTime()+"我的信息("+name+"):"+new String(buf,0,dp.getLength());
pprint(sInfo);
lst.add(sInfo,0);
}else if(ssInfo==null){
lb2.setText("内容格式不能为空!");
}
}catch(IOException ee){
ee.printStackTrace();
}
tfInfo.setText(" ");
}
});
new Thread(new Runnable(){
public void run(){
while(true){
try{
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);
String sIP=dp.getAddress().getHostAddress().trim();
int sPort=dp.getPort();
String name=dp.getAddress().getHostName();
String sInfo=dTime()+"来自"+sIP+"("+name+")的信息(端口号:"+sPort+"):"+new String(buf,0,dp.getLength());
String localIP=InetAddress.getLocalHost().getHostAddress();
String loopIP="127.0.0.1";
boolean b1=sIP.equals(localIP);
boolean b2=sIP.equals(loopIP);
if((!b1)&&(!b2)){
lst.add(sInfo,0);
pprint(sInfo);
System.out.println(dp.getAddress().getHostName());
}
}catch(IOException e){
e.printStackTrace();
}
}
}
}).start();
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//...Perform a task...
lb1.setText(dTime());
//t.setTitle(new Date().toString());
}
};
new javax.swing.Timer(delay, taskPerformer).start();
}
String dTime(){
Date today=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("hh:mm:ss");
String time=sdf.format(today);
return time;
}
boolean ipTest(String ip){
boolean bln=ip.matches("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
if(bln){
lb2.setText("沙舟狼客工作室");
System.out.println("right");
return bln;
}else{
lb2.setText("IP地址格工不正确!");
tfIP.setText(" ");
System.out.println("wrong");
return bln;
}
}
void pprint(String str){
try{
File f=new File("d:/聊天信息.txt");
FileOutputStream fos=new FileOutputStream(f,true);
PrintWriter pw=new PrintWriter(fos);
pw.println(str);
fos.flush();
pw.flush();
fos.close();
pw.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String args[]){
new Test();
}
}
分享到:
相关推荐
Java基于UDP协议的聊天程序是一种实现网络通信的应用实例,它利用了UDP(User Datagram Protocol,用户数据报协议)这一无连接、不可靠的传输协议。UDP的特点在于其速度较快,因为不需要建立和维护连接,适合实时性...
Java基于UDP协议的聊天程序是一种实现网络通信的应用实例,它利用了无连接的用户数据报协议(User Datagram Protocol,简称UDP)进行数据传输。在这个完整版的程序中,开发者已经完成了从设计到调试的全部过程,使其...
在这个基于UDP协议的Java聊天程序中,我们将探讨如何利用Java的网络编程API来实现多客户端的通信。 首先,我们需要理解Java中的Socket编程模型。在TCP中,我们使用`Socket`和`ServerSocket`类进行通信,但在UDP中,...
【标题】:“基于UDP通信的聊天程序” 【描述】:“基于UDP通信的聊天设计,设有注册和登陆。附有代码(全)” 【标签】:“UDP 计算机网络” 【正文】: UDP(User Datagram Protocol)是一种无连接的、不可靠...
java基于socket和UDP的GUI聊天小程序,启动服务器后,可以创建多个客户端进行相互对话。实现了客户端与服务器的交互体验,想学习的可以下载下来看看源码,个人觉得用于课设也是没问题的。
Java实现的基于UDP协议的简单聊天室是一种网络通信应用,主要利用了Java的Socket编程来构建客户端和服务器端的通信框架。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,常用于实时数据交换,如...
总的来说,这个基于UDP和TCP/IP技术的聊天程序源码涵盖了网络编程的基础,包括协议的理解、多线程的运用、以及Java Applet的实践。对于初学者,这是一个很好的起点,可以帮助他们理解网络通信的底层机制,并提升编程...
Java基于UDP的聊天程序是一种利用无连接的用户数据报协议(User Datagram Protocol)进行网络通信的应用。UDP在传输层提供了一种简单而高效的方式,它不保证数据的顺序、完整性和可靠性,但因其轻量级的特性,在实时...
【基于UDP的Java聊天工具】是一款由个人开发者编写的通信应用程序,它利用了无连接的User Datagram Protocol(UDP)来实现实时的聊天和文件传输功能。UDP是一种传输层协议,与TCP(传输控制协议)相比,它不提供连接...
### UDP的Java聊天程序知识点详解 #### 一、UDP协议简介 UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了简单不可靠的信息传送服务。与面向连接的TCP协议不同,UDP在发送数据之前不需要与对方...
Java UDP协议交互是一种基于无连接的传输层协议,用于实现控制台聊天应用。UDP(User Datagram Protocol)相较于TCP(Transmission Control Protocol)具有更快的传输速度,因为它不进行握手、确认和重传等复杂的...
【基于UDP的简单聊天室】是一个使用Java编程语言实现的基于用户数据协议(UDP)的简易通信应用。UDP是一种无连接的、不可靠的传输层协议,常用于实时数据传输,如在线游戏、语音通话和视频流等,因为它强调速度而非...
Java聊天小程序是一种基于Java编程语言实现的简单交互式应用程序,它允许用户之间进行实时通信。在本项目中,我们关注的是如何使用Java技术来构建一个基础的聊天平台。以下是关于这个话题的一些关键知识点: 1. **...
这个"UDP聊天"程序可能是基于以上原理实现的,通过DatagramSocket和DatagramPacket在本地进行数据交换。"www.pudn.com.txt"可能是一个包含额外说明或示例代码的文本文件,用于帮助理解或使用这个聊天程序。通过研究...
在本项目中,“JavaUDP开发简单聊天系统”是指使用Java语言实现的一个基于UDP协议的简易聊天程序。下面我们将深入探讨Java UDP编程的关键概念和技术。 首先,Java提供了`java.net.DatagramSocket`类来处理UDP通信。...
在这个“JAVA基于UDP通信的一对一聊天”示例中,我们将探讨如何利用Java的Socket编程来实现UDP通信的基本原理和流程。 首先,我们需要了解UDP通信的基础。UDP协议不提供连接建立、数据顺序保证或错误校验,因此它的...
在IT领域,C/S(Client/Server)架构是一种常见的分布式应用结构,主要用于构建网络应用程序,如我们这里的"基于C/S架构的JAVA聊天程序"。在这个系统中,客户端(Client)负责用户交互,而服务器端(Server)处理...
Java聊天小程序基于C/S(客户机/服务器)架构,是一种典型的两层或三层应用程序模型,其中客户端发送请求,服务器响应并处理这些请求。这个项目对于初学者了解Java网络编程非常有帮助,因为它涉及到TCP/IP协议、套接...
本主题聚焦于"基于Socket的TCP和UDP聊天程序代码",提供了完整的Java工程文件,帮助开发者理解如何利用这两种传输协议创建聊天应用程序。TCP(传输控制协议)和UDP(用户数据报协议)是Internet协议族中的两种主要...
Java Swing聊天小程序是一款基于Java Socket、线程和TCP协议实现的简单通信应用。在这个程序中,用户可以通过图形用户界面(GUI)进行实时的文本聊天。下面我们将深入探讨这些关键技术点。 1. **Java Socket**: ...