JAVA聊天客户端程序.doc
文本预览下载声明
JAVA聊天客户端程序设计
聊天客户端
一.功能实现分析
聊天客户端程序分为两部分:
1.服务器端
2.客户端
二.功能实现
1.服务器端的功能实现
(1)服务器端产生一个本地地址 和端口号为8888的Socket,等待客户端连接。
(2)服务器端产生线程用来存放客户端的线程,并且实现向它所维护的客户端发送收到的信息(从客户端)。完成客户端间的对话,并且服务器端会保存客户端对话。当有客户端退出时,服务器端将从连接列表中移除该客户端。
2 .客户端的功能实现
(1)客户端产生一个本地地址和端口号8888的请求,去申请访问服务器端。然后键入信息,通过客户端输出流将信息发送至服务器,服务器产生输出流传送到其他客户端,完成信息传输。
三.服务器端与客户端
四.程序
程序运行软件: netbeans-7.1.1-ml-javase-windows
Proteus7.7中文版
1.服务器程序:
package test;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;
import java.io.IOException;
import java.net.BindException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class Server
{
boolean stat = false; //stat 为假,初始化。
ServerSocket ss = null;//服务器端Socket 初始化
ListClient clients = new ArrayList();
//ArrayListString arrayList = new ArrayList(String);
// 客户端存储
public static void main(String[] args)
{
new Server().start();
//线程开始从start运行
}
public void start()
{
try
{
ss = new ServerSocket(8888);
// 生成一个服务器socket端口号是8888
stat = true;
} catch (BindException e)
{
System.out.println(端口正在使用中。。。。);
System.exit(0);
//关闭程序
} catch (IOException e)
{
}
try
{
while (stat)
// 一直监听客户端请求所以循环为真
{
Socket s = ss.accept();
// 每当接收一个客户端就打印语句
System.out.println(一个客户联系服务器!);
Client c = new Client(s);
new Thread(c).start();
clients.add(c);
//把客户端加入到List
}
} catch (IOException e)
{
} finally
{
try
{
ss.close();
} catch (IOException e)
{
}
}
}
class Client implements Runnable
{
private Socket s;
private DataInputStream dis;
private DataOutputStream dos;
private boolean cont = false;
public Client(Socket s)
{
this.s = s;
try
{
dis = new DataInputStream(s.getInputStream());
dos = new DataOutpu
显示全部