- 浏览: 1639822 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (405)
- C/C++ (16)
- Linux (60)
- Algorithm (41)
- ACM (8)
- Ruby (39)
- Ruby on Rails (6)
- FP (2)
- Java SE (39)
- Java EE (6)
- Spring (11)
- Hibernate (1)
- Struts (1)
- Ajax (5)
- php (2)
- Data/Web Mining (20)
- Search Engine (19)
- NLP (2)
- Machine Learning (23)
- R (0)
- Database (10)
- Data Structure (6)
- Design Pattern (16)
- Hadoop (2)
- Browser (0)
- Firefox plugin/XPCOM (8)
- Eclise development (5)
- Architecture (1)
- Server (1)
- Cache (6)
- Code Generation (3)
- Open Source Tool (5)
- Develope Tools (5)
- 读书笔记 (7)
- 备忘 (4)
- 情感 (4)
- Others (20)
- python (0)
最新评论
-
532870393:
请问下,这本书是基于Hadoop1还是Hadoop2?
Hadoop in Action简单笔记(一) -
dongbiying:
不懂呀。。
十大常用数据结构 -
bing_it:
...
使用Spring MVC HandlerExceptionResolver处理异常 -
一别梦心:
按照上面的执行,文件确实是更新了,但是还是找不到kernel, ...
virtualbox 4.08安装虚机Ubuntu11.04增强功能失败解决方法 -
dsjt:
楼主spring 什么版本,我的3.1 ,xml中配置 < ...
使用Spring MVC HandlerExceptionResolver处理异常
用java写的基于Socket的简单即时通讯程序,用户可以注册并登录,也可以作为游客身份使用.
/**//* *服务端 */ package edu.jlu.fuliang; import java.io.*; import java.net.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.*; public class Server extends JFrame implements Runnable { private ServerSocket server; private Socket connection; private OutputStream output; private InputStream input; private Thread outThread; private JTextArea display; private JTextField text1; private JButton startButton; public static void main(String args[]) { Server s = new Server(); s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public Server() { super("Server"); startButton = new JButton("Start the server"); text1 = new JTextField(20); display = new JTextArea(7, 30); display.setEditable(false); Container container = getContentPane(); container.setLayout(new BorderLayout()); container.add(startButton,BorderLayout.NORTH); container.add(new JScrollPane(display),BorderLayout.CENTER); container.add(text1,BorderLayout.SOUTH); /**//* * 给开始按钮添加监听器。 */ startButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { display.setText("启动服务器 "); startButton.setEnabled(false); try { //端口设为5000,最大连接请求为100个 server = new ServerSocket(5000, 100); connection = server.accept(); output = connection.getOutputStream(); input = connection.getInputStream(); output.write("连接成功! ".getBytes()); outThread = new Thread(Server.this); outThread.start(); } catch (IOException ee) { } } }); /**//* /*给文本域添加键盘监听器,按回车发送信息。 */ text1.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent ke) { if(ke.getKeyCode() == KeyEvent.VK_ENTER){ byte writeBytes[] = new byte[50]; String s = "Server: " + text1.getText() + ""; text1.setText(""); writeBytes = s.getBytes(); display.append(s+" "); try { output.write(writeBytes); } catch (IOException ee) { } if (s.trim().equals("Server: exit")) { outThread.stop(); quit(); } } } }); setSize(300, 400); setResizable(false); setVisible(true); } public void run() { while (true) { byte readBytes[] = new byte[50]; try { input.read(readBytes);//读去对方发送的消息 } catch (IOException e) { } String s = new String(readBytes); display.append(s+" "); if (s.trim().equals("Client: exit")) break; } quit(); } public void quit() { try { output.close(); input.close(); connection.close(); } catch (IOException e) { } startButton.setEnabled(true); } } /**//* *客户端 */ package edu.jlu.fuliang; import java.io.*; import java.net.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.*; public class Client extends JFrame implements Runnable { private Socket client; private OutputStream output; private InputStream input; private Thread outThread; private JTextArea display; private JTextField text1; private JButton startButton; private JMenu loginMenu = new JMenu("登录"); private JMenuItem register = new JMenuItem("注册"); private JMenuItem login = new JMenuItem("登录"); private JMenuBar bar = new JMenuBar(); private Register registerDlg ; private Login loginDlg; private RandomAccessFile file; public static void main(String args[]) { Client c = new Client(); c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public Client() { super("Client"); startButton = new JButton("Connect to server"); text1 = new JTextField(20); display = new JTextArea(7, 30); display.setEditable(false); loginMenu.add(register); loginMenu.add(login); bar.add(loginMenu); setJMenuBar(bar); Container container = getContentPane(); container.setLayout(new BorderLayout()); container.add(startButton,BorderLayout.NORTH); container.add(new JScrollPane(display),BorderLayout.CENTER); container.add(text1,BorderLayout.SOUTH); try { file = new RandomAccessFile(new File("E://login.txt"),"rw"); } catch (IOException e1) { e1.printStackTrace(); } registerDlg = new Register(this,file); loginDlg = new Login(this,file); startButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { display.setText("连接服务器"); startButton.setEnabled(false); try { client = new Socket("127.0.0.1", 5000); output = client.getOutputStream(); input = client.getInputStream(); outThread = new Thread(Client.this); outThread.start(); } catch (IOException ee) { } } }); text1.addKeyListener(new KeyAdapter(){ public void keyPressed(KeyEvent ke) { if(ke.getKeyCode() == KeyEvent.VK_ENTER){ byte writeBytes[] = new byte[50]; String s = loginDlg.getLoginName()+": " + text1.getText() + ""; text1.setText(""); writeBytes = s.getBytes(); display.append(s+" "); try { output.write(writeBytes); } catch (IOException ee) { } if (s.trim().equals(loginDlg.getLoginName()+": exit")) { outThread.stop(); quit(); } } } }); register.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { registerDlg.setVisible(true); } }); login.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { loginDlg.setVisible(true); } }); setSize(300, 400); setResizable(false); setVisible(true); } public void run() { while (true) { byte readBytes[] = new byte[1024]; try { input.read(readBytes); } catch (IOException e) { } String s = new String(readBytes); display.append(s+" "); if (s.trim().equals("Server: exit")) break; } quit(); } public void quit() { try { output.close(); input.close(); client.close(); } catch (IOException e) { } startButton.setEnabled(true); } } package edu.jlu.fuliang; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class Login extends JDialog{ private JTextField textField; private JButton loginButton; private RandomAccessFile file;//保存注册信息的文件 private String loginName = "guest";//保存登录者的名字,为登陆为guest; public Login(JFrame f,RandomAccessFile file){ super(f,"登陆",false); this.file = file; JPanel panel = new JPanel(); panel.add(new JLabel("昵称:")); textField = new JTextField(10); panel.add(textField); Container container = getContentPane(); container.setLayout(new BorderLayout()); container.add(panel,BorderLayout.NORTH); loginButton = new JButton("登陆"); container.add(loginButton,BorderLayout.SOUTH); setVisible(false); setBounds(100,200,200,200); loginButton.addActionListener(new LoginListener()); } public String getLoginName(){ return loginName; } /**//* * 登录监听器,当单击登陆按钮时,触发该事件 * 从文件中读取并查找是否注册过,如果没有找 * 到则弹出未注册警告。否则弹出欢迎对话框表 * 示欢迎 */ private class LoginListener implements ActionListener{ public void actionPerformed(ActionEvent e) { boolean flag = false; try { String name = textField.getText().trim(); textField.setText(""); file.seek(0); while(file.getFilePointer() < file.length()){ String nik = file.readUTF(); if(nik.equals(name)){ flag = true; loginName = name; break; } } if(!flag){ String warning="没有找到你的账号请先注册!"; JOptionPane.showMessageDialog(Login.this,warning,"警告",JOptionPane.WARNING_MESSAGE); }else{ String welcome="欢迎来聊天!"; JOptionPane.showMessageDialog(Login.this,welcome,"欢迎",JOptionPane.WARNING_MESSAGE); } Login.this.setVisible(false); } catch (IOException e1) { e1.printStackTrace(); } } } } package edu.jlu.fuliang; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; public class Register extends JDialog{ private String nickName; private JTextField textField; private JButton registerButton; private RandomAccessFile file;////保存注册信息的文件 public Register(JFrame f,RandomAccessFile file){ super(f,"注册",false); this.file = file; JPanel panel = new JPanel(); panel.add(new JLabel("昵称:")); textField = new JTextField(10); panel.add(textField); Container container = getContentPane(); container.setLayout(new BorderLayout()); container.add(panel,BorderLayout.NORTH); registerButton = new JButton("注册"); container.add(registerButton,BorderLayout.SOUTH); setVisible(false); setBounds(100,200,200,200); registerButton.addActionListener(new RegisterListener()); } /**//* * 注册监听器,当单击登注册按钮时,触发该事件 * 并向文件中写入注册信息。 */ private class RegisterListener implements ActionListener{ public void actionPerformed(ActionEvent e) { try { file.seek(file.length()); String str = textField.getText(); textField.setText(""); file.writeUTF(str); Register.this.setVisible(false); } catch (IOException e1) { e1.printStackTrace(); } } } }
发表评论
-
Builder模式遇到继承
2013-10-13 13:48 0interface Self<T extends ... -
Builder模式遇到集成
2013-10-13 13:47 0package com.qunar.qss.business. ... -
JVM调优Step by Step
2012-02-02 17:38 0现代的JVM能够适应于各种应用和领域,每个应用和领域的使用 ... -
commons-lang StringUtils#split的坑
2011-12-31 10:11 3120今天用StringUtils#split,陷入了前两个坑。需求 ... -
使用scala.sys.process包和系统交互
2011-07-19 00:00 6451在Java中我们可以使用Runtime.getRuntime( ... -
HttpClient Json请求工具
2011-05-05 18:32 17813发送Json请求,结果返回Json. public sta ... -
利用Java反射实现通用的Excel报表
2011-04-12 16:00 1991最近有很多客户报表需要提供客户下载,需要生成一个Excel的格 ... -
深入异常处理
2011-03-31 20:46 1777异常处理是写一个健壮 ... -
Java序列化注意一些点
2011-03-12 21:04 18201.序列化ID的问题: 标示了版本号,版本号一致才能反序列化成 ... -
Java动态代理
2010-09-24 00:34 4409Java提供了动态代理,可以完成AOP和装饰模式的功能,主要的 ... -
Java Timestamp是和ExtJS的timestamp不兼容
2010-08-09 20:33 3331Timestamp纳秒级别的,ExtJS的timestamp使 ... -
XML DocumentBuilder#parse(String str)
2010-07-06 15:55 3858DocumentBuilderFactory dbf = ... -
[备忘]String#split/substring的子串会共享原来大的String
2010-03-29 17:18 1456如果每次需要大字符串中的很小的一个字串,可能会引起内存中大量的 ... -
runtime.exec()执行进程block死锁问题
2010-01-18 21:39 5241最近在java代码中使用runtime.exec执行rsync ... -
URL中文问题
2010-01-08 14:46 10482最近使用HttpClient,和Java的java.net.U ... -
A TaskExecutor Impl
2009-12-07 11:33 1590import java.util.ArrayList; im ... -
使用XStream把Java对象XML/JSON格式的序列化和反序列化
2009-05-05 11:37 6198试了一下Thoughtworks的XStream,以测试驱动和 ... -
从《编程的未来》这篇文章想到C++和Java语言的爽与不爽
2009-05-01 23:44 3941从编程的未来这篇文 ... -
《Effetive Java》读书笔记二
2009-02-23 14:23 1574第二章 所有对象共有的 ... -
《Effetive Java》读书笔记一
2009-02-19 11:36 2144《Effetive Java》和 《Effective C++ ...
相关推荐
资源名字:基于java+mysql+socket的即时通讯软件设计与实现(源码+文档)_mysql_socket_即时通讯软件.zip 资源内容:项目全套源码+完整文档 源码说明: 全部项目源码都是经过测试校正后百分百成功运行。 适合场景:...
用JAVA的socket编程,做的一个简单即时通讯程序。。很简单
用java编写的基于socket的进程间通信程序 客户端服务器聊天小程序
用java写的基于Socket的简单即时通讯程序,用户可以注册并登录,也可以作为游客身份使用
基于Socket的Java语言网络通讯机制和程序设计 pdf 基于SOCKET的JAVA网络编程1 pdf 基于SOCKET的JAVA网络编程 pdf ">用Java实现一个UDP通信模型 pdf 用Java实现一个Socket通信模型 pdf 用Java实现网络通讯 pdf ...
用Java实现一个UDP通信模型.pdf 用Java实现一个Socket通信模型.pdf 用Java实现网络通讯.pdf ...基于Socket的Java语言网络通讯机制和程序设计.pdf 基于SOCKET的JAVA网络编程1.pdf 基于SOCKET的JAVA网络编程.pdf ...
二、即时通讯系统的开发语言 开发基于Socket通信的聊天软件 ,该软件采用了客户端/服务器(C/S)体系结构,由于Java是当下最流行的开发语言,它 一开始就内置了对网络编程的支持,它提供的强大的API,可以使程序员很...
环境:Windows XP SP3、 VC++ 6.0、 Windows 2003 SDK 使用步骤: 1、下载解压之后,使用VC++ 6.0打开两个工程:...阅读对象:具有Java的Socket编程经验的人员,并且希望能够书写出比Java效率更高的即时通讯程序的人员
Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了...
本程序使用的是 TCP 协议实现的即时通信软件,程序是基于 Java 语言开发的,主要用到的技术有: Socket 编程 自定义协议 如果使用普通的方法来标记一条消息的结束,如换行符,那么程序就不易扩展,只能发送纯文本...
Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了...
设计与开发一个简单的即时通讯工具,可以采用客户端/服务器(Client/Server)架构,基于Java语言进行实现。以下是该工具的设计与开发描述: 功能需求: 用户注册与登录:用户可以注册新账号,并使用已有账号进行...
基于socket开发包编写的即时通信程序,可在局域网中实现即时通信
一种基于Java企业内部及时通讯软件设计 摘要:基于Socket的局域网通讯软件能为企业局域网提供一种安全、快速的通信机制, 使用Java Swing 技术设计系统界面,以Derby作为数据库服务器,用Socket编程技术实现网络通讯...
针对当前中小型企业办公人员对即时通讯软件要求较低等问题, 提出了一种基于Java平台下的网络聊天系统的设计与实现方案,对系统进行了整体设计和详细设计,该系统主要通过Java Socket网络编程实现通信,具有速度快,高...
用JAVA语言设计即时通讯系统是为了更好的满足人们的网上聊天和彻底的实现两台计算机之间点对点的信息交流的需求提出来的,也是当今网络迅速发展的结果。用于实现单一的即时通讯、文件共享的软件实在太少,而且,它们...
Java是一种程序设计语言,它具有简单的、完全面向对象以及与平台无关的结构,也具有可移植性、高性能和安全性,并提供了多线程的功能,而Java语言最大的成功之处在于它的平台无关性和具有强大的网络编程功能,基于...
本项目旨在开发一个基于小程序、Socket技术和Node.js的即时通讯系统,以提供快速、可靠和高效的消息交换服务。该系统针对企业内部沟通与协作需求而设计,支持文本、图片、视频等多种消息类型的即时传输,同时提供...
基于Java的网络通讯系统设计与实现如下: 系统架构: 客户端-服务器架构:采用客户端-服务器...通过以上设计与实现,基于Java的网络通讯系统能够为用户提供安全、稳定和便捷的即时通讯服务,满足用户的沟通交流需求。