UDP_program

原创 2007年09月18日 13:14:00

package comm;
/**
 * @docRoot:UDP程序
 * @author gsp
 * @date:2007-09-18
 * @telephone:80889574
 */
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class DataSocket  extends JFrame implements Runnable{
 private static final long serialVersionUID = 1L;
 
 /**程序的显示图标**/
 private ImageIcon icon = new ImageIcon(DataSocket.class.getResource("qq.gif"));
 /**中间的面板**/
 private JPanel pan_center;
 /**聊天记录的滑块**/
 private JScrollPane jsp_scroll_records;
 /**聊天内容**/
 private JTextArea text_chatRecord;
 /**下面的面板**/
 private JPanel pan_bottom;
 /**需要发送的消息**/
 private JTextField text_message;
 /**发送按钮**/
 private JButton btn_send;
 /**接受到的数据**/
 byte[] buf = new byte[256];
 /**建立接受的套间字**/
 private DatagramPacket dp = new DatagramPacket(buf,buf.length);
 
 /**构造方法**/
 public DataSocket()
 {
  try{
   jinint();
  }catch(Exception e)
  {
   JOptionPane.showMessageDialog(this,"应用程序初始化失败");
  }
 }
 /**应用程序初始化**/
 private void jinint()
 {
  /**添加聊天记录**/
  text_chatRecord = new JTextArea(12,35);
  text_chatRecord.setFont(new Font("黑体",1,12));
  text_chatRecord.setEditable(false);
  jsp_scroll_records = new JScrollPane(text_chatRecord);
  pan_center = new JPanel();
  pan_center.add(jsp_scroll_records);
  this.getContentPane().add(pan_center,BorderLayout.CENTER);
  /**添加发送消息的模块**/
  pan_bottom = new JPanel();
  text_message = new JTextField(20);
  text_message.setFont(new Font("黑体",1,12));
  pan_bottom.add(text_message);
  btn_send = new JButton("发送消息");
  pan_bottom.add(btn_send);
  this.getContentPane().add(pan_bottom,BorderLayout.SOUTH);
  /**窗体的外观**/
  this.setTitle("网络聊天程序");
  this.setIconImage(icon.getImage());
  Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
  this.setLocation((screen.width-400)/2,(screen.height-300)/2);
  this.setSize(400,300);
  this.setResizable(false);
  /**添加关闭的监听**/
  this.addWindowListener(new WindowListener(){
   public void windowOpened(WindowEvent arg0) {}
   public void windowClosing(WindowEvent arg0) {}
   public void windowClosed(WindowEvent arg0) {
    dispose();
    System.exit(0);
   }
   public void windowIconified(WindowEvent arg0) {}
   public void windowDeiconified(WindowEvent arg0) {}
   public void windowActivated(WindowEvent arg0) {}
   public void windowDeactivated(WindowEvent arg0) {}
  });
  /**添加btn_send的监听**/
  btn_send.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent arg0) {
      sendMessage();
   }
  });  
  this.setVisible(true);
  Thread thread = new Thread(this);
  thread.start();
 }
 /**发送消息**/
 private void sendMessage(){
  try
  {
   if(!text_message.getText().equalsIgnoreCase(""))
   {
          byte[] send_message_str = text_message.getText().getBytes();
          InetAddress address = InetAddress.getByName("localhost");
          DatagramPacket paket = new DatagramPacket(send_message_str,send_message_str.length,address,3000);
          DatagramSocket socket = new DatagramSocket();
          Calendar calendar = Calendar.getInstance();
          String  year = calendar.get(Calendar.YEAR)+"-";
          String month = calendar.get(Calendar.MONTH)<10?"0"+calendar.get(Calendar.MONTH)+"-":calendar.get(Calendar.MONTH)+"-";
          String day = calendar.get(Calendar.DATE) <10?"0"+calendar.get(Calendar.DATE)+"  ":calendar.get(Calendar.DATE)+"  ";
          String hour = calendar.get(Calendar.HOUR_OF_DAY) < 10?"0"+calendar.get(Calendar.HOUR_OF_DAY)+":":calendar.get(Calendar.HOUR_OF_DAY)+":";
          String minute = calendar.get(Calendar.MINUTE)<10?"0"+ calendar.get(Calendar.MINUTE)+":":calendar.get(Calendar.MINUTE)+":";
          String second = calendar.get(Calendar.SECOND)<10?"0"+calendar.get(Calendar.SECOND)+"":calendar.get(Calendar.SECOND)+"  ";
          text_chatRecord.append(year+month+day+hour+minute+second+"DataSocket:/n"+text_message.getText()+"/n");
          socket.send(paket);
   }
  }catch(Exception e)
  {}
 }
 /**test**/
 public static  void  main(String[] args)
 {
  new DataSocket();
 }
 /**线程自动自行的方法**/
 public void run() {
  try
  {
   DatagramSocket socket = new DatagramSocket(3001);
   while(true)
   {
    socket.receive(dp);
    String receive_message = new String(dp.getData());
    Calendar calendar = Calendar.getInstance();
       String  year = calendar.get(Calendar.YEAR)+"-";
       String month = calendar.get(Calendar.MONTH)<10?"0"+calendar.get(Calendar.MONTH)+"-":calendar.get(Calendar.MONTH)+"-";
       String day = calendar.get(Calendar.DATE) <10?"0"+calendar.get(Calendar.DATE)+"  ":calendar.get(Calendar.DATE)+"  ";
       String hour = calendar.get(Calendar.HOUR_OF_DAY) < 10?"0"+calendar.get(Calendar.HOUR_OF_DAY)+":":calendar.get(Calendar.HOUR_OF_DAY)+":";
       String minute = calendar.get(Calendar.MINUTE)<10?"0"+ calendar.get(Calendar.MINUTE)+":":calendar.get(Calendar.MINUTE)+":";
       String second = calendar.get(Calendar.SECOND)<10?"0"+calendar.get(Calendar.SECOND)+"":calendar.get(Calendar.SECOND)+"  ";
       text_chatRecord.append(year+month+day+hour+minute+second+"DataSocket1:/n"+receive_message+"/n");
   }
  }catch(Exception e){}
 }
}  

 

相关文章推荐

iOS 开发 入门:加入iOS Developer Program (iOS开发者申请教程)

我于2012年12月23日提交加入iOS开发者计划(即iOS Developer Program,简称IDP)的申请,至2012年12月28日申请成功,扣除星期天,一共仅用了5天时间,这超出了我的意料...

Shader and Program编程基本概念

一、本文关注的问题: • Shader and program 对象介绍 • 创建并编译一个Shader对象 • 创建并链接一个Program对象 • 获取并设置uniforms • 获...
  • huyisu
  • huyisu
  • 2015年06月25日 08:20
  • 359

Program work 6. 每个节点只含一个链接点的双向链表实现

一般我们要实现双链表的时候,每个节点都会存一个数据元,然后一个

“访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_20\lib\rt.jar具有一定限制,因此无法访问构造函数JFrame()”的解决方法

---》初使用eclipse编辑器编写java程序时,调用窗体对象时,若出现如下问题时:         访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_2...

“访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_20\lib\rt.jar具有一定限制,因此无法访问构造函数JFrame()”的解决方法

访问限制:由于对必需的库C:\Program Files\Java\jre1.8.0_20\lib\rt.jar具有一定限制,因此无法访问构造函数JFrame()...

直接获取Program Files目录的API

偶然间发现 SHGetSpecialFolderPath 这个API真是好东西,好多系统目录都可以直接获取了,再也不用一点点的拼装了。MSDN上的说明如下:  Syntax BOOL SH...

Windows下的Program Files (x86)文件夹是干什么的?

今天在微博上看到有人问这个问题。在装好64位的Windows之后,能在系统盘(通常是C盘)下看到这么一个文件夹,它比我们都知道的Program Files文件夹多出来个”(x86)“的后缀。那这个带”...
  • wmtbla
  • wmtbla
  • 2016年01月11日 09:25
  • 196

IAR IDE学习之---关于工程设置中“program entry”作用的猜想

1、问题 一个工程包含众多源文件,需要指定一个入口地址,如IAR IDE中默认的入口地址(符号或者标号)"__iar_program_start"(在$TOOLS_DIR$\arm\lib目录下的cs...

boost学习之命令行参数解析库program_options

介绍 程序参数项(program options)是一系列name=value对,program_options 允许程序开发者获得通过命令行(command line)和配置文件(...
  • yahohi
  • yahohi
  • 2013年08月06日 14:07
  • 5794

Masm First Program

Masm First Program   了解变量与规则
  • bhlice
  • bhlice
  • 2013年07月09日 00:13
  • 432
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UDP_program
举报原因:
原因补充:

(最多只允许输入30个字)