`
Joy.Cai
  • 浏览: 1998 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

基于局域网的多通道即时通讯软件 开发日记I

阅读更多

最近,天气寒冷阿:)大家出来聚下开个会什么的,都不愿意(这帮人懒阿,大家住的就是两层楼的距离!)所以,很多问题只好借助QQ来谈了,呵呵,问题是,校园网这个东东 还不是一般的慢,尽管它据说是IPV6的  而且,大家不同Group讨论(咳,注意了 那面和女朋友卿卿我我的)的时候,甚至还要开几个窗口,慢阿!

所以,我们觉得有必要开发一个小的局域网聊天软件,方便大家使用,因为考察了现有的一些产品,发现功能不能满足我们的需要,只好DIY了。

功能需求:MutiChannel ; LAN FILE Transport (speed) ;Voice;Video

采用C/S架构,部署于WebLogic应用服务

先开发了客户端:

java 代码
  1. import java.awt.*;   
  2. import javax.swing.*;   
  3. import java.net.*;   
  4. import java.io.*;   
  5. import java.awt.event.*;   
  6.   
  7. class  Connect extends JFrame implements ActionListener,ItemListener{   
  8.             /**  
  9.      *   
  10.      */  
  11.     private static final long serialVersionUID = 1L;   
  12.   
  13.     private Socket client;//套接字   
  14.     private String hostName = "localhost";   
  15.     private int port = 6000;   
  16.   
  17.     private JLabel nameLabel;   
  18.     private JTextField nameText;   
  19.     private JRadioButton boyRadio,girlRadio,secretRadio;   
  20.     private String sex ="";   
  21.   
  22.     private JLabel hostLabel;   
  23.     private JLabel portLabel;   
  24.     private JTextField hostText;   
  25.     private JTextField portText;   
  26.   
  27.     private JButton cancell;   
  28.     private JButton ok;   
  29.   
  30.     private Container c;   
  31.   
  32.     private BufferedReader in;   
  33.     private PrintWriter out;   
  34.   
  35.     public Connect(){   
  36.         super("聊天登陆");   
  37.   
  38.         c = this.getContentPane();   
  39.         c.setLayout(new BorderLayout());   
  40.         final Color defaultBackground = this.getBackground();   
  41.   
  42.         hostLabel = new JLabel("地址:");   
  43.         portLabel = new JLabel("端口:");   
  44.         hostText = new JTextField(10);   
  45.         hostText.setText(hostName);         //设置默认值   
  46.         portText = new JTextField(4);   
  47.         portText.setText(Integer.toString(port));   
  48.   
  49.         cancell = new JButton("放弃");   
  50.         ok = new JButton("连接");   
  51.   
  52.         nameLabel = new JLabel("姓名:");   
  53.         nameText = new JTextField(10);   
  54.         boyRadio = new JRadioButton("男生");   
  55.         girlRadio = new JRadioButton("女生");   
  56.         secretRadio = new JRadioButton("保密");   
  57.   
  58.         ButtonGroup sexGroup = new  ButtonGroup();   
  59.         sexGroup.add(boyRadio);   
  60.         sexGroup.add(girlRadio);   
  61.         sexGroup.add(secretRadio);   
  62.   
  63.         //*********用户信息面板*********************//   
  64.         JPanel userInfoPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));   
  65.         userInfoPanel.add(nameLabel);   
  66.         userInfoPanel.add(nameText);   
  67.   
  68.         userInfoPanel.add(boyRadio);   
  69.         userInfoPanel.add(girlRadio);   
  70.         userInfoPanel.add(secretRadio);   
  71.         //***************************************//   
  72.   
  73.         //****************连接服务器面板******************//   
  74.         JPanel centerPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));   
  75.         centerPanel.add(hostLabel);   
  76.         centerPanel.add(hostText);   
  77.         centerPanel.add(portLabel);   
  78.         centerPanel.add(portText);   
  79.         //***************************************************//   
  80.   
  81.         //*******************组合以上两个面板*****************//   
  82.         JPanel upperPanel = new JPanel(new GridLayout(2,1)); //面板   
  83.         upperPanel.setBorder(BorderFactory.createLineBorder(new Color(125,161,253),2));   
  84.         upperPanel.setBackground(new Color(70,61,129));   
  85.         upperPanel.add(userInfoPanel);   
  86.         upperPanel.add(centerPanel);   
  87.       //***************************************************//   
  88.   
  89.         //****************连接确认连接的面板******************//   
  90.         JPanel lowerPanel = new JPanel();   
  91.         JLabel spaceLabel = new JLabel("");   
  92.         spaceLabel.setPreferredSize(new Dimension(20,20));   
  93.         lowerPanel.add(cancell);   
  94.         lowerPanel.add(spaceLabel);   
  95.         lowerPanel.add(ok);   
  96.         //***************************************************//   
  97.            
  98.         //***************组合整个框架**********************//   
  99.         c.add(upperPanel,BorderLayout.CENTER);   
  100.         c.add(lowerPanel,BorderLayout.SOUTH);   
  101.         //**************************************************//   
  102.   
  103.         //事件监听 单选   
  104.         boyRadio.addItemListener(this);   
  105.         girlRadio.addItemListener(this);   
  106.         secretRadio.addItemListener(this);   
  107.   
  108.         //事件监听 按钮   
  109.         cancell.addActionListener(this);   
  110.         ok.addActionListener(this);   
  111.   
  112.         this.setPreferredSize(new Dimension(350,150));   
  113.         this.setMaximumSize(new Dimension(350,150));   
  114.   
  115.         this.pack();   
  116.         this.setResizable(false);  //设置不能最大化   
  117.         this.setVisible(true);   
  118.     }    
  119.   
  120.     //事件 单选   
  121.      public void itemStateChanged(ItemEvent e){   
  122.   
  123.          if (e.getSource() == boyRadio){   
  124.             sex = "Boy";   
  125.          }   
  126.          if (e.getSource() == girlRadio){   
  127.             sex = "Girl";   
  128.          }   
  129.          if (e.getSource() == secretRadio){   
  130.             sex = "Secret";   
  131.          }   
  132.   
  133.      }   
  134.   
  135.     //事件 按钮   
  136.     public void actionPerformed(ActionEvent e){   
  137.         if(e.getSource() == cancell){   
  138.             this.shutDown();   
  139.         }   
  140.         else if (e.getSource() == ok){   
  141.             if ((nameText.getText()).trim().length() == 0){   
  142.                 JOptionPane.showMessageDialog(this,"请输入一个名字","提示",JOptionPane.INFORMATION_MESSAGE);   
  143.                 return;   
  144.             }   
  145.             else if (sex.length() == 0){   
  146.                 JOptionPane.showMessageDialog(this,"请选择性别","提示",JOptionPane.INFORMATION_MESSAGE);   
  147.                 return;   
  148.             }   
  149.             else{   
  150.                 try{   
  151.                     this.link();   
  152.                     ChatFrame app = new ChatFrame();   
  153.                      app.init(in,out,nameText.getText());   
  154.                     ok.setEnabled(false); //确保不会被再次点击   
  155.                     this.setVisible(false);   
  156.                 }catch (Exception ee){   
  157.                     JOptionPane.showMessageDialog(this,"登陆失败","失败",JOptionPane.ERROR_MESSAGE);   
  158.                     return;   
  159.                 }   
  160.             }   
  161.         }   
  162.     }   
  163.   
  164.     public void link() throws Exception{            //连接服务器   
  165.   
  166.         hostName = hostText.getText().trim();   
  167.         port = Integer.parseInt(portText.getText());   
  168.         client = new Socket(hostName,port);   
  169.   
  170.         in = new BufferedReader(new InputStreamReader(client.getInputStream()));   
  171.         out = new PrintWriter(client.getOutputStream());   
  172.         out.println(nameText.getText()+"&"+sex);   
  173.         out.flush();   
  174.   
  175.         /**  
  176.         catch(NumberFormatException nfe){  
  177.             System.out.println(nfe);  
  178.         //  return false;  
  179.         }  
  180.         catch(Exception e){  
  181.             System.out.println(e);  
  182.         //  return false;  
  183.         }  
  184.         //return true;  
  185.         */  
  186.     }   
  187.   
  188.   public void shutDown() {     
  189.       System.exit(0);    
  190.     }   
  191.   
  192.     public static void main(String[] args) {   
  193.         Connect app = new Connect();   
  194.   
  195.         app.addWindowListener(   
  196.             new WindowAdapter(){   
  197.                 public void windowClosing(WindowEvent e){   
  198.                     System.exit(0);   
  199.                 }   
  200.             }   
  201.         );   
  202.     }   
  203. }   
分享到:
评论

相关推荐

    基于局域网Java开发的通讯软件

    基于局域网Java开发的即时通讯软件,采用c/s架构,是本人的毕业作品,分为客户端跟服务端两个部分。群聊 ,私聊 ,点对点传输文件,但是还有许多要修改的地方。而进行点对点的传输文件后,该用户客户端无法使用,这...

    局域网即时通讯软件

    局域网即时通讯软件是一种专为企事业单位设计的通信工具,它主要在局域网环境中运行,便于企业内部员工之间的快速、高效沟通。这类软件通常包含多种功能,如文字聊天、文件传输、群组讨论、任务分配等,旨在提高团队...

    MYQQ局域网即时通讯软件

    MYQQ是一款专为局域网设计的即时通讯软件,它基于C#编程语言开发,旨在提供便捷、高效的内部沟通环境。这款软件虽然存在一些局限性,但仍然可以在特定环境中发挥其价值,尤其对于那些需要在局域网内快速交流的企业或...

    VC局域网即时通讯软件NETMsg_源程序.rar

    标题中的"VC局域网即时通讯软件NETMsg_源程序.rar"表明这是一个使用Visual C++(简称VC)开发的局域网即时通讯软件的源代码压缩包。在计算机科学和IT领域,即时通讯软件用于实现实时的文本、语音甚至视频通信,而...

    计算机毕业设计基于局域网的即时通讯聊天系统的设计

    本文提出的基于局域网的即时通讯聊天系统,旨在为局域网内的用户提供一个安全、高效的交流平台。该系统运行在VC++平台上,采用C++语言编写,分为服务器端和客户端两大部分,通过异步套接字实现非阻塞模式的通信,...

    毕业设计局域网内即时通讯软件

    【标题】"毕业设计局域网内即时通讯软件"揭示了这个项目是一个针对毕业设计而构建的局域网即时通信应用程序。它利用JAVA语言作为主要的开发工具,目的是实现局域网内的用户间快速、实时的信息交换。 【描述】中的...

    基于WiFi的Android局域网即时通讯软件

    Android 客户端项目源码,平板类型,基于WiFi的Android局域网即时通讯软件

    基于局域网的即时通讯聊天室系统设计.pdf

    基于局域网的即时通讯聊天室系统设计

    基于J2SE的局域网即时通讯工具的实现

    【基于J2SE的局域网即时通讯工具的实现】主要关注的是如何利用Java标准版(J2SE)开发一款能够在局域网内实现实时通信的应用。此工具旨在满足校园局域网内的用户需求,提供文字、文件、语音和视频的即时交流。 1. *...

    基于局域网的即时通讯聊天室系统设计.doc.pdf

    本文旨在设计和实现一个基于局域网的即时通讯聊天室系统,使用VC平台上的C++语言开发,旨在满足企业内部员工的即时通讯需求,避免使用类似QQ等软件泄露内部信息。 局域网即时通讯 局域网即时通讯是指在局域网内部...

    飞鸽传书(最经典的局域网即时通讯软件)

    飞鸽传书是一款深受用户喜爱的局域网即时通讯软件,尤其在企业、学校和家庭网络环境中广泛应用。这款软件以其简单易用、高效稳定的特点,成为了一种在局域网内进行文件传输和消息交流的理想工具。下面我们将深入探讨...

    飞秋(用于局域网内的即时通讯)

    用于局域网内的即时通讯。功能相似于腾讯的QQ软件。

    基于JAVA局域网监听软件的设计与开发.zip

    基于JAVA局域网监听软件的设计与开发.zip基于JAVA局域网监听软件的设计与开发.zip基于JAVA局域网监听软件的设计与开发.zip基于JAVA局域网监听软件的设计与开发.zip基于JAVA局域网监听软件的设计与开发.zip基于JAVA...

    基于Linux平台的局域网即时通讯软件论文.doc

    在这样的背景下,开发一款基于Linux平台的局域网即时通讯软件显得尤为重要。 #### 二、即时通讯的发展背景 1. **即时通讯工具概述**: - 即时通讯工具是一种允许用户在网络环境中进行实时交流的应用程序。 - ...

    基于局域网的即时通讯软件(无服务器)

    该软件是本人的毕业设计,本人亲测在局域网中可行。 本软件使用Java开发,采用点对点技术(也叫P2P,不需要额外服务器),类似飞秋那样,有些功能还没有实现,可以自己再添加,代码觉对调理清楚,下载分要的有点高但...

    企业IM——基于MFC框架的局域网即时通讯软件

    企业IM是基于MFC框架的局域网通讯软件,具有客户端和服务器两部分。使用visual studio 2010 IDE 开发。资源中附有客户端和服务器端所有源代码,另外还附有MySQL数据库创建代码和用户手册。仅适用于软件、计算机专业...

    基于python +socket局域网下的即时通讯文件传输聊天软件

    【作品名称】:基于python 开发socket局域网下的即时通讯文件传输聊天软件 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目...

Global site tag (gtag.js) - Google Analytics