聊天程序

开发环境

运行环境:eclipse

使用语言:Java语言。

使用数据库:SQL server 数据库。

功能需求

 

1)客户端:提供登录、主窗体及聊天等界面及对应的业务,向服务器发送相应的服务请求,并接受相应的处理结果。客户端只负责链接远程服务器,并发出相应的服务请求,不进行核心业务的处理。具体的处理交给服务器,而客户端只接收服务器处理的结果并显示给用户。

2)服务器:监控登录信息及在线用户信息,接收客户端的服务请求,并做相应的处理,然后将处理结果发送给客户端。服务器负责处理核心的业务,并负责连接数据库,保存和读取数据。

 

客户端TCP通信设计

设计ClientToServer类,该类实现了Runnable接口,是一个线程。

主要方法:

[1] boolean sendLoginInfoToServer(User u) :登录请求。

[2] void getProgerties():获取配置文件中的服务器IP地址信息。

[3] void logout(): 下线,通知服务器该用户下线。

[4]inttoRegister(UserInfoBean user):新用户注册,返回QQ号。

[5] void noticeUpdate():通知刷新好友信息。

B. 服务器TCP通信设计

1)设计ServerThread线程类:处理用户连接服务器请求,并为其启动单独的服务(Server)线程。

主要方法:

[1] void run(): 重写线程类Thread的方法,不断的等待客户端的连接请求。

[2] void pauseThread():暂停服务。

[3] void reStartThread():恢复服务。

2)设计Server线程类:处理每个上线用户个各种服务请求。

主要方法:

[1] void run():不断的等待用户的请求信息,并判断请求类型。

[2] void login():处理用户登录。

[3] void registerNewUser():处理注册新用户

[4] void queryUser():处理查询用户。

[5] void addFriend():添加好友。

[6] void deleteFriend():删除好友。

[7] void updateOwnInfo():更新自己的信息。

[8] void logout():下线。

[9] void queryFriend():查询好友信息。

2.1.3.2基于UDP的通信

在进行用户聊天时,采用基于UDP的通信协议。

A.客户端UDP通信设计

设计ClientToServerThread线程类:负责UDP通信。

主要方法:

[1]void run():循环等待监听发来的数据。

[2]void getPropertieInfo():获取通信的服务器的IP地址及本机通信端口。

[3]void sendData(byte buffer[]):发送数据。

[4]void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。

[5]void ObjectToByte(Object obj):将Object型数据转为Byte型。

[6]void closeSocket():关闭收发数据报套接字。

B. 服务器UDP通信设计

设计ClientToServerThread线程类:负责UDP通信,主要是转发用户发送的信息,并保存用户的聊天记录。

主要方法:

[1]void run():循环等待监听发来的数据。

[2]void getPropertieInfo():获取通信的服务器的IP地址及本机通信端口。

[3]void sendData(byte buffer[]):发送数据。

[4] void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。

[5]void ObjectToByte(Object obj):将Object型数据转为Byte型。

[6]void closeSocket():关闭收发数据报套接字。

数据访问层的实现

2.1.4.1 打开数据库连接类(ConnectionFactory)

[1]void getPropertiesInfo():从配置文件中获取数据库连接信息。

[2]Connection getConnection():打开数据库连接。

2.1.4.2 关闭数据库连接类(DbClose)

[1]void getPropertiesInfo():从配置文件中获取数据库连接信息。

[2]void close(Connection conn):关闭数据库连接。

[3]void close(PreparedStatement pre):关闭数据库语句

[4]void close(ResultSet rs):关闭结果集

[5]voidclose(Connection conn, PreparedStatement pre, ResultSet rs)

2.1.4.3 数据操作类(Dml)

[1]void insert(UserInfoBean user):增加新用户,插入信息。

[2]void update(UserInfoBean user):更新用户信息。

[3]void delete(int qq):删除信息。

(搜索)

界面层的实现

登录界面

JLoginFrm登陆窗体主要用于用户登陆,注册和找回密码。

内部类:

BackgroundPanel 继承于JPanel主要用于设置窗体背景图片

主要函数:

1.actionPerformed(ActionEvent e)主要对窗体的按键监听

2.JLoginFrm()构造函数,控件的初始化。

注册界面

JRegisterFrm继承与JFrame主要用于用户基本信息的注册。

主要函数:

1. Void setDay()根据不同的年份和月份设置天数

2.String getBir()以1-1月-2014形式得到用户的生日

3.getUserInfo()得到用户的所有信息

聊天界面

ChatPanel主要用于用户间的聊天通信

主要函数:

1、setMessage()设置当前显示所有会话的面板,不可编辑

2、setSendMessage()设置当前发送消息的面板,可编辑

3、sendMessage()发送消息,讲发送消息面板的内容发送到会话面板和对方。

4、sendFile()传输文件

5、sendImage()发送图片

6、startShake()发送震动消息

主界面

public class findFriendFrm extends JFrame

//该类负责查找好友界面

[1] public String getName()//获得找到好友的昵称或者QQ号

[2] public class InformationFrm extends JFrame

//该类负责显示好友信息的界面

用户信息界面

好友信息界面主要是将从服务端读取的好友的个人信息显示出来。

[1] publicInformationFrm(UserInfoBean userInfo)

//在该构造方法中必须传入一个UserInfoBean 的对象,此对象中包含了好友的所有信息

[2] public class selectGroupFrm extends JFrame

//该类负责显示添加好友的一个界面

时间: 2024-10-09 20:03:58

聊天程序的相关文章

用L脚本语言开发一个简单的局域网聊天程序

#scp #这是一个简单的局域网聊天程序的例子 定义:字符串,string1 定义:字符串,string2 #addr1是对方的地址 #addr2是自己的地址 #如果addr1和addr2相同,就是自己和自己聊天 定义:地址,addr1,127.0.0.1,27015 定义:地址,addr2,127.0.0.1,27015 定义:整数,字节数,0 #在自己的UDP端口上监听 定义:网络连接,conn2,UDP 监听:conn2,addr2 #连接对方的UDP端口 定义:网络连接,conn1,UD

聊天程序(基于Socket、Thread)

聊天程序简述 1.目的:主要是为了阐述Socket,以及应用多线程,本文侧重Socket相关网路编程的阐述.如果您对多线程不了解,大家可以看下我的上一篇博文浅解多线程 . 2.功能:此聊天程序功能实现了服务端跟多个客户端之间的聊天,可以群发消息,选择ip发消息,客户端向服务端发送文件. (例子为WinForm应用程序) Socket,端口,Tcp,UDP. 概念 1.Socket还被称作"套接字",应用程序通常通过套接字向网络发送请求或者应答网络请求.根据连接启动的方式以及本地套接字要

Socket聊天程序——初始设计

写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了几个晚上的空闲时间敲了一个,目前仅支持单聊,群聊,文件传送这些功能.首先,贴出一个丑丑的程序图(UI是用java swing写的,这个早就忘光了,无奈看着JDK的API写了一个),如下图: 服务端设计: 服务端主要有两个操作,一是阻塞接收客户端的socket并做响应处理,二是检测客户端的心跳,如果客

UDP—Socket,套接字聊天简单的聊天程序。

思路:(发送端) 1.既然需要聊天.就应该怎么建立聊天程序,,DatagramSocket对象http://www.w3cschool.cc/manual/jdk1.6/ DatagramSocket dgSocket = new DatagramSocket(); 2.那么发给谁?怎么打包数据.DatagramPacket. 代码如下DatagramPacket对象API文档链接http://www.w3cschool.cc/manual/jdk1.6/ 具体查看集体代码: //创建数据包 b

boost asio异步读写网络聊天程序客户端 实例详解

// // chat_client.cpp // ~~~~~~~~~~~~~~~ // // Copyright (c) 2003-2013 Christopher M. Kohlhoff (chris at kohlhoff dot com) // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://ww

Socket聊天程序——客户端

写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细设计和Common模块记录一下,因为这个周末开始就要去忙其他东西了. 设计: 客户端设计主要分成两个部分,分别是socket通讯模块设计和UI相关设计. 客户端socket通讯设计: 这里的设计其实跟服务端的设计差不多,不同的是服务端是接收心跳包,而客户端是发送心跳包,由于客户端只与一个服务端进行通

java Socket多线程聊天程序(适合初学者)

一个非常简单的java聊天程序,有客户端和服务器端,目前只有群聊功能,其他的所有功能都可以在这个基础上添加,现在我分享出来主要是为了保持一个最简单的java聊天程序便于初学者学习,界面也非常的简洁,只有两个文件,主要是用了socket,java多线程,知识点不是很多,很适合初学者 下面是服务器端代码 package tk.socket; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.Act

Socket网络编程--聊天程序(3)

上一小节,已经讲到可以每个人多说话,而且还没有限制,简单的来说,我们已经完成了聊天的功能了,那么接下来我们要实现什么功能呢?一个聊天程序至少应该支持一对多的通讯吧,接下来就实现多个客户端往服务器发送数据,和服务器向多个客户端发送数据. 多对一,单向,各个客户端都可以向服务器发送数据 close函数 #include <unistd.h> int close(int sockfd); //用于关闭所打开的Socket套接字 返回值:如果为0表示成功,-1表示失败 处理的办法是每一个客户端连接到服

Socket聊天程序——Common

写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块主要是数据交互,这里使用JSON数据进行交互,common模块定义了各类交互信息,SendHelper实现的socket信息的传送,I18N是语言话,ConstantValue是系统中的配置以及常量(这里常量都是用接口,这个可能不太好),对于ReturnMessage拥有一系列的DTO作为其cont

Android IPC机制(五)用Socket实现跨进程聊天程序

相关文章: Android IPC机制(一)开启多进程 Android IPC机制(二)用Messenger进行进程间通信 Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用 Android IPC机制(四)用ContentProvider进行进程间通信 1.Socket简介 Socket也称作"套接字",是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信.它分为流式套接字和