`
沙舟狼客
  • 浏览: 158158 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

基于UDP协议的Java聊天小程序!

阅读更多

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协议的聊天程序(可运行).zip

    java基于UDP协议的聊天程序(可运行).zip java基于UDP协议的聊天程序(可运行).zip 大小:88KB

    java基于socket和UDP的GUI聊天程序.zip

    java基于socket和UDP的GUI聊天小程序,启动服务器后,可以创建多个客户端进行相互对话。实现了客户端与服务器的交互体验,想学习的可以下载下来看看源码,个人觉得用于课设也是没问题的。

    Java基于UDP协议实现简单的聊天室程序

    主要为大家详细介绍了Java基于UDP协议实现简单的聊天室程序的相关资料,感兴趣的小伙伴们可以参考一下

    java源码包---java 源码 大量 实例

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    基于java的聊天系统的设计于实现.rar

    网络通信:使用Java的Socket编程实现客户端与服务器之间的通信,可以选择TCP或UDP协议。 图形界面:可以使用JavaFX或Swing等GUI库来实现客户端的用户界面设计。 数据存储:可以使用关系型数据库如MySQL或非关系型...

    java源码包4

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    java源码包3

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    JAVA上百实例源码以及开源项目源代码

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    基于java的局域网聊天系统-毕业设计.doc

    基于java的局域网聊天系统 目录 1 引言 3 1.1课题要求及目标 3 1.2 开发目标 7 2系统总体设计(针对一个完整的题目) 7 2.1 用例图及用例描述 7 2.2系统结构 10 3. 系统详细设计与实现 11 3.1引言……………………...

    java源码包2

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    JAVA上百实例源码以及开源项目

     基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...

    一种基于Java企业内部及时通讯软件设计.doc

    (3) 在本系统设计采用UDP通信协议时,基于UDP的Socket编程技术,Java.net中提供了两个 类DatagramSoeket和DatagramPacket用来支持数据报通信。Datagramsocket用来在程序 之间建立传送数据报的通信连接是数据报...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    2个目标文件 摘要:Java源码,网络相关,UDP 基于JAVA的UDP服务器模型源代码,内含UDP服务器端模型和UDP客户端模型两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式...

    java应用软件程序设计

    195 第6章 Java C/S结构编程 197 实例67 实现C/S多线程 198 实例68 客户端程序 200 实例69 服务器端程序 201 实例70 C/S结构聊天室 203 实例71 基于C/S的小游戏 209 实例72 应用C/S数据库 237...

    基于Java的视频会议系统的实现.rar

    网络通信:采用Java的Socket编程实现客户端与服务器之间的通信,可以选择TCP或UDP协议。 图形界面:可以使用JavaFX或Swing等GUI库来实现客户端的用户界面设计。 安全性考虑: 数据加密:对音视频数据和聊天内容进行...

    基于Java的远程视频会议系统的实现.rar

    网络通信:采用Java的Socket编程实现客户端与服务器之间的视频数据传输,可以选择TCP或UDP协议。 图形界面:可以使用JavaFX或Swing等GUI库来实现客户端的用户界面设计,包括视频窗口、控制面板等。 服务器端技术:...

    MobileIMSDK是一套专为移动端开发的原创IM通信层框架

    客户端支持iOS、Android、标准Java、H5(暂未开源)、小程序(暂未开源)、Uniap(暂未开源);服务端基于Netty,性能卓越、易于扩展;可与姊妹工程 MobileIMSDK-Web 无缝互通实现网页端聊天或推送等;可应用于跨设备、跨...

Global site tag (gtag.js) - Google Analytics