Socket通信是网络通信中最常用的技术之一,通过Socket建立的可靠连接,可以让多个终端与服务器保持通信,最典型的应用是建立一个多人聊天程序。本实例使用ServerSocket建立聊天服务器。将服务器端所有的通讯线程保存到一个集合当中,当有用户发来数据,则转发给所有用户,实现聊天室效果。Android端通过使用Socket建立客户端链接,并且在AsyncTask中执行网络读写的任务,将用户输入的内容发送到服务器,并接收服务器发来的数据,显示到界面上。开启多个虚拟机模拟多人聊天效果。...
分类:
移动开发 时间:
2016-05-27 11:35:03
阅读次数:
305
开发环境 运行环境:eclipse 使用语言:Java语言。 使用数据库:SQL server 数据库。 功能需求 1)客户端:提供登录、主窗体及聊天等界面及对应的业务,向服务器发送相应的服务请求,并接受相应的处理结果。客户端只负责链接远程服务器,并发出相应的服务请求,不进行核心业务的处理。具体的处 ...
分类:
其他好文 时间:
2016-05-20 22:16:25
阅读次数:
186
练习:UDP聊天程序
通过键盘录入获取要发送的信息。
将发送和接收分别封装到两个线程中。
聊天方一:
package cn.hncu.url.udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStre...
分类:
编程语言 时间:
2016-05-12 23:52:28
阅读次数:
262
自定义异常的目的是为了更好的表示出错的原因,能够针对不同的异常执行不同的处理。
异常的自定义是简单的,只是简单的继承了Exception类。下面给出所有聊天程序的异常类的基类的ChatException的定义:
package SimpleChat;
public class ChatException extends Exception{
/**
*
*/
priv...
分类:
其他好文 时间:
2016-05-12 22:30:33
阅读次数:
236
通过键盘录入获取要发送的信息。
将发送和接收分别封装到两个线程中。
package cn.hncu.UDP;//发送方
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public cl...
分类:
编程语言 时间:
2016-05-12 22:22:43
阅读次数:
246
如果一个服务器只能为两个用户提供服务器,那就真的是太渣了。很多时候,聊天的客户都会大于两个。因此需要提高并发量。
在Java中使用多线程还是很方便的。我在这个服务器程序使用的是实现Runnable接口的方法来定义自己的多线程操作。通过重写run方法,来实现自己的多线程操作。
每个线程都会有一个client成员变量,这个成员变量用来记录客户端的Socket。然后,每个线程都会使用...
分类:
编程语言 时间:
2016-05-12 21:34:08
阅读次数:
167
其实大家也能想到,登陆和注册窗口其实很相似的,而注册窗口总是比登陆窗口多一些内容。
先来说说登陆窗口。登陆窗口的界面如下图:
登陆窗口继承字Dialog类,而不是继承自JFrame类。登陆窗口显示在屏幕中间,通过下面的方法就可以达到效果:
setLocationRelativeTo(null);在构造函数中调用这个方法,就能显示在屏幕中央,如果参数不是null,则显示的位置与...
分类:
其他好文 时间:
2016-05-12 21:31:50
阅读次数:
137
主窗口用的是JList控件,在显示了登陆的跟人信息之后,接下来就是好友的列表。
为了方便以后拓展 ,我把好友的信息封装在FriendInformation中,FriendInformation类的定义也很简单的,都能看懂。
下面来逐步分析一下MainWin类:
MainWin中比较重要的是事件的监听:
好友列表中的右键菜单的监听: JMenuItem item = new JMe...
分类:
其他好文 时间:
2016-05-12 21:22:40
阅读次数:
242
我设计的时候是先从服务器端开始设计的,服务器端先给出接口,然后客户端针对接口编程。
在说服务器的代码之前先说说数据库的设计吧。
数据的设计是简单的,只有两个表:
create database SimpleChat;
CREATE TABLE IF NOT EXISTS Account (
username varchar(50) NOT NULL,
userpass...
分类:
其他好文 时间:
2016-05-12 21:02:30
阅读次数:
183
客户端的基本功能是根据服务器给出的接口逐步来实现的。客户端的设计流程是清晰的。简化的思考流程如下图所示:
当然,实现的时候就要考虑比较多的细节,比如在注册的时候,注册失败怎么办,登陆的时候,账号密码不匹配怎么办。但总的流程就是这样子的。
从上面的流程可以看出了,客户端的窗口模块分下面几个(附上动作的解析):
1 登陆窗口模块:
登陆窗口需要提供两个输入框,输入...
分类:
其他好文 时间:
2016-05-12 18:30:00
阅读次数:
148