当前位置:文档之家› windows环境下C语言多线程实现网络编程,多人聊天室,

windows环境下C语言多线程实现网络编程,多人聊天室,

windows环境下C语言多线程实现网络编程,多人聊天室,
windows环境下C语言多线程实现网络编程,多人聊天室,

/***********************

服务器

************************/

#include "stdafx.h"

#include

#include

#include

#include "my_typedef.h"

#pragma comment(lib,"ws2_32.lib")

#define L_MAX (255)

#define C_MAX (100)

DWORD WINAPI ThreadProc( /* 线程函数*/ LPVOID lpParam

);

HANDLE tThread_Client[C_MAX] = {NULL};

LNode *pHead;

int main(int argc, char* argv[])

{

//初始化WSA

WORD sockVersion = MAKEWORD(2,2);

WSADATA wsaData;

if(WSAStartup(sockVersion, &wsaData)!=0)

{

return 0;

}

//创建套接字

SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(slisten == INV ALID_SOCKET)

{

printf("socket error !");

return 0;

}

//绑定IP和端口

sockaddr_in sin;

sin.sin_family = AF_INET;

sin.sin_port = htons(8888);

sin.sin_addr.S_un.S_addr = INADDR_ANY;

if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)

{

printf("bind error !");

}

//开始监听

if(listen(slisten, C_MAX) == SOCKET_ERROR)

{

printf("listen error !");

return 0;

}

sockaddr_in remoteAddr;

int nAddrlen = sizeof(remoteAddr);

SOCKET sClient = NULL;

SOCKET Socket_Sclient = NULL;

/* 创建一个链表存放已经连接的客户端*/

pHead = (LNode*)malloc(sizeof(LNode));

pHead->pNext = NULL;

pHead->sClient = NULL;

/*循环等待客户端连接,并在连接后创建一个SOCKET和线程*/

while (true)

{

int i = 0;

printf("等待连接...\n");

sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);

if(sClient == INV ALID_SOCKET)

{

printf("accept error !");

continue;

}

else

{

Socket_Sclient = sClient;

add_Element(pHead,sClient);

tThread_Client[i] = CreateThread(NULL, 0, ThreadProc,(LPVOID)Socket_Sclient,

printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));

i++;

}

}

WSACleanup();

return 0;

}

DWORD WINAPI ThreadProc(

LPVOID lpParam

)

{

char Rev_Data[L_MAX] = {0};

char Send_Data[L_MAX] = {0};

//接收数据

while( strcmp(Rev_Data,"exit") != 0)

{

int ret = recv((SOCKET)lpParam, Rev_Data, L_MAX, 0);

LNode *p = pHead->pNext;

if(ret > 0)

{

Rev_Data[ret] = 0x00;

//发送数据

strcpy(Send_Data,Rev_Data);

if(!strcmp(Send_Data,"exit"))

{

printf("一个客户端已经断开连接!\n");

}

while (p != NULL )

{

if (p->sClient != (SOCKET)lpParam)

{

send(p->sClient, Send_Data, strlen(Send_Data), 0);

p = p->pNext;

}

else

{

p = p->pNext;

}

}

}

return (0UL);

}

#include "stdafx.h"

#include

#include

#include

#include "my_typedef.h"

INT32 add_Element(LNode *pHead, SOCKET sClient) {

INT32 FuncFlag = 0;

LNode *p = pHead;

LNode *NewNode = NULL;

INT32 i32I = 0;

if ((NULL == pHead ) || (sClient == NULL))

{

FuncFlag = -1;

}

else

{

while (p->pNext != NULL)

{

p = p->pNext;

}

NewNode = (LNode *)malloc(sizeof(LNode));

NewNode->sClient = sClient;

NewNode->pNext = NULL;

p->pNext = NewNode;

FuncFlag = 1;

return FuncFlag;

}

}

#include "stdafx.h"

#include

#include

#include

#include "my_typedef.h"

INT32 del_Element(

LNode *pHead,

SOCKET sClient

)

{

INT32 FuncFlag = 0;

LNode *p = NULL;

LNode *q =NULL;

INT32 i32I = 0;

if ((NULL == pHead ) || (sClient == NULL))

{

FuncFlag = -1;

}

else

{

p = pHead->pNext;

q = pHead;

while (p != NULL)

{

if ((p->sClient != sClient))

{

q = q->pNext;

p = p->pNext;

}

else

{

q->pNext = p->pNext;

free(p);

break;

}

}

FuncFlag = 1;

}

return FuncFlag;

}

客户端

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

#define IP_ADDRESS "172.16.10.63"

#define M_MAX 1000

#define T_MAX 100

#define EXIT -2

DWORD WINAPI tThread(LPVOID lpParameter) {

SOCKET sock = (SOCKET)lpParameter;

int ret = 0;

char Date_Buffer[M_MAX];

while (1)

{

ret = recv(sock, Date_Buffer, M_MAX, 0);

printf("\t\t\t\t接收到消息\n\t\t\t\t ");

if(!strcmp(Date_Buffer,"exit"))

{

ret = -1;

}

if(ret > 0)

{

Date_Buffer[ret] = 0x00;

printf("%s",Date_Buffer);

printf("\n");

}

else

{

printf("一个客户端已经断开连接!\n");

break;

}

}

return 0;

}

int main(int argc, char* argv[])

{

SOCKET sclient;

struct sockaddr_in serAddr;

char sendData[M_MAX] = "0";

char recData[M_MAX] = "0";

int ret, i = 1;

HANDLE Recv_Thread;

/* 初始化WSA */

WSADATA data;

WORD sockVersion = MAKEWORD(2,2);

if(WSAStartup(sockVersion, &data) != 0)

{

return 0;

}

//创建套接字

sclient = socket(AF_INET, SOCK_STREAM, 0);

if(sclient == INV ALID_SOCKET)

{

printf("invalid socket !");

return 0;

}

/* 绑定IP和端口*/

serAddr.sin_family = AF_INET;

serAddr.sin_port = htons(8888);

serAddr.sin_addr.S_un.S_addr = inet_addr(IP_ADDRESS);

/* 连接服务器*/

if (connect(sclient, (struct sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)

{

printf("connect error !");

return 0;

}

else

{

printf("已经与服务器连接!\n\n");

}

Recv_Thread = CreateThread(NULL, 0, tThread, (LPVOID)sclient, 0, NULL);

if (Recv_Thread == NULL)

{

printf("Create a thread failure!\n");

return 0;

}

while (1)

{

/* 发送消息*/

printf("发送消息\n");

gets(sendData);

send(sclient, sendData, strlen(sendData), 0);

if (!strcmp(sendData, "exit"))

{

ret = EXIT;

closesocket(sclient);

return 0;

}

}

WaitForSingleObject(Recv_Thread, INFINITE);

CloseHandle(Recv_Thread);

closesocket(sclient);

WSACleanup();

return 0;

}

C+++网络聊天室设计报告和源程序

目录 1.需求分析 (2) 2.相关知识............................................... - 3 -2.1W INSOCK介绍 (3) 2.2MFC类CA SYNCSOCKET和CS OCKET (3) 2.3利用CS OCKET进行有连接的通信 (4) 3.详细设计................................... 错误!未定义书签。 3.1客户端的实现 (4) 3.2服务端的实现 (8) 4.程序运行结果.......................................... - 13 -4.1服务器端 .. (13) 4.2客户端 (13) 5.参考文献 ................................................................................................................... 错误!未定义书签。

1.需求分析 当前是数字信息时代,网络时代,任何一种编辑工具都不能忽视在网络上的应用,并且随着Internet 的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的Web应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。 在网络早期就开始盛行,不论是BBS,IRC 都有类似网上聊天室的机制。聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务。 聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返的时间,这也是网上交友之所以如此热门的原因。 聊天室的设计目标 本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端,主要功能为: 服务器端功能: 1、初始化socket, 创建服务器端。 2、维护一个链表,保存所有用户的IP地址、端口信息。 3、接受用户传送来的聊天信息,然后向链表中的所用用户转发。 4、接受用户传送来的连接判断命令,并向用户发出响应命令。 客户端功能: 客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。 通过本课题的毕业设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

网络聊天室项目可行性实施报告

网络聊天室项目 1.1编写目的 计算机技术的快速发展,特别是计算机网络的发展,越来越深刻的改变了人们生活的方方面面。使得人们能以更低廉的价格,开发出更方便、更实用的网络工具。各种在线服务系统,更是深刻的影响了人们的联系和交流方式,使得人们可以自傲远隔千里之遥随时通讯。过去的种种陈旧的联系方式,已经不能满足现代生活的需要。网上聊天系统作为一种方便人们之间联系的使用系统便应运而生。网上聊天系统是人们进行交流和联系提供的一个平台。通过提供完善的网上聊天系统的管理,可以达到增进人与人之间的交流和沟通。 在网络世界中,聊天室(Chat Room)是一个最常见的服务,它最早起源于BBS站点,聊天室作为一个在漫漫长夜打发消遣时间的最佳软件,除了能够用于聊天消遣时间以外,还拥有语音聊天、视频聊天、共享图片、文件等功能。现在随着网络的发展,聊天室发展的速度已经非常迅速了,现在的聊天室技术,都已经运用到了“网络会议”上,现在有很多的会议在网上视频聊天会议[9]。 该网络聊天室项目可行性研究报告是对项目课题的全面通盘考虑,是项目分析员进行进一步工作的前提,是软件开发人员正确成功的开发项目的前提与基础.写软件项目可行性研究报告可以使软件开发团体尽可能早的估计研制课题的可行性,可以在定义阶段较早的认识到系统方案的缺陷,就可以少花时间和精力,也可以省成资金,并且避免了许多专业方面的困难.所以该软件项目可行性研究报告在整个开发过程中是非常重要的. 本报告的预期读者为项目管理人,教师,软件用户学生,软件开发工程师等。 1.2 项目概述 在Internet上,qq,MSN,飞信等网上软件,极大程度方便了各地友人之间的联系,也使世界一下子缩小了,不管你在哪里,只要你上了网,打开这些软件,就可以给你的朋友发信息。现在,企业,机关,学校都纷纷建立起自己的局域网。在局域网里,虽然可以通过文件共享的方式进行通讯,但单单使用这种方式,是不方便的。首先在局域网里的网上邻居,只能看到机器名,不清楚对方是谁,也不知道对方机器有什么资源可以共享,而且当局域网机器很多时,这种方式更加麻烦。 在市面上,聊天室的应用软件出现得比较早,比如说,Microsoft Chat,一个在界面及功能方面都已经非常完善的“聊天室”的应用软件,它是一套独立于浏览器之外的,即与浏览器无关的,需要下载客户端安装使用的套装软件,在使

网络课程设计实验报告--QQ聊天实现

计算机网络课程设计报告 设计选题网络聊天室 姓名马继鸣 学号 0909090630 完成时间 2012-1-12 一、需求分析

聊天工具大多数由客户端程序和服务器程序外加服务器端,本程序采用客户机/服务器架构模式。通过Java提供的Socket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能。用多线程可完成多点对多点的聊天。 主要有两个应用程序,分别为服务器程序和客户端程序。服务器应用程序主要用于消息转发,以及向所有用户发送系统消息等;客户端应用程序主要用于客户聊天记录的显示和信息输入。采用Client/Server(C/S)体系结构,即客户机/服务器体系结构。聊天服务器专门用于监控用户状态和转发消息,客户端负责接收消息的用户序列和消息文本发送到服务器。该聊天系统实现群聊,用户登陆,退出聊天系统等功能。 二. 设计 1.设计思想: 课程设计中利用JAVA实现基于C/S模式的聊天程序。聊天室共分为服 务器端和客户端两部分,服务器端程序主要负责侦听客户发来的消息,客 户端登录到服务器端才可以实现正常的聊天功能。

2.功能设计 (1)服务器端的主要功能如下。 在特定端口上进行侦听,等待客户端连接。用户可以配置服务端的侦听端口,默认端口为10000. 当停止服务时,断开所有用户连接。 (2)客户端的主要功能如下。 连接到已经开启聊天服务的服务端。 当服务器端开启的话,用户可以随时登录与注销。

用户可以向所有人发送消息。 3.详细设计 聊天室服务器端设计 聊天室服务器中主要的功能文件的功能如下: MyButLis.java 主要用于添加事件侦听和动作处理,具体是服务器按钮中的“终止”“发送”的处理。 public class MyButLis implements ActionListener private MyServe server; private JTextField filed1; public void actionPerformed(ActionEvent e) MyChatSet.java 服务器的线程队列,运行的方法,新增一个用户,则增加一个线程,并可以返回应答消息,给其余用户发送上下线信息,发送聊天信息(群聊私聊虽然已写,但是不知为何没有实现),发送用户列表。关键在于除了线程之外,还定义了传输数据时的协议内容,如何分辨不同的信息,如聊天信息,登陆信息,上下线信息,并把信息完整准确的传递。 public static ArrayList servers=new ArrayList();//线程队列 public static void addThread(MyserThread th) //增加一个服务器线程对象 public static void sendReMess(String type,String state,String s,MyserThread myth)//返回应答信息 public static void SendOSMess(String type,String user)//其他用户上下线信息 public static void SendChatMess(String type,String sender,String reciver,String Mess)//聊天信息 public static void SendList//用户列表 MyCheckTool.java 保存用户的登陆信息,在其中建立一个码表,并且可以判断登陆信息是否合法。 //建立码表,用以保存用户信息 private static Map maps=new HashMap(); public static boolean CheckUser(MyUserInfo user)// 验证用户名

关于网络聊天室的开发报告报告

J a v a P r o g r a m m i n g 课程设计报告 设计题目:简单的网络聊天程序 系别:江淮学院 专业:计算机技术与科学 班级:计算机3061 姓名:周剑 学号:3062101103 起止日期:2008年12月29日~2009年1月4日指导教师:张永军、周泓、高尚兵、刘虎

课程设计中文摘要 随着大众化、小型化趋势的加剧,网络聊天在当今已经不算新鲜事物,聊天室可以更好的方便大家交流,请教或探讨问题,同时也能开阔视野。但大多数网络聊天都需要借助位于Internet的服务器,这就给那些具有大规模内部网络的用户造成了不便,出于安全等考虑,通常这些内部网络不能直接连接到Internet。我设计的聊天室,提供了类似于常见聊天室的功能,同时可以在局域网内部使用,只需稍加改进,便可以应用于架设企业内部的聊天室,方便员工之间的沟通。 本聊天室系统,主要利用DELPHI用于底层网络通信Socket组件,使用了多线程技术。 关键字:聊天,功能,socket

Foreign language curriculum design Abstract With the popularization of small and medium-sized trend intensifies, the network has been in today's chat is not new things, chat rooms can facilitate better communication, consult or to study the issue, but also to broaden our horizons. But most networks need to chat with Internet server is located, which for those with large-scale internal network users the inconvenience caused, for safety considerations, these internal network usually can not directly connect to the Internet. I designed the chat rooms, provides a similar function of common chat room, as well as local area network for internal use, just a little improvement, it can be applied to set up enterprises within the chat rooms to facilitate communication between employees. The chat room system, mainly for the use of DELPHI bottom Socket network communication components, the use of multi-threading technology. Keywords: chat, function, socket

JAVA聊天室实验报告

JA V A聊天室实验报告 姓名:马琳越 班级:131114 学号:13111368 日期:2014年4月23日

目录 目录 (2) JA V A程序课程设计任务书 (3) 摘要 (4) 第1章引言 (5) 第2章聊天室系统的设计 (7) 第3章界面设计 (11) 第4章总结 .................................................................................. 错误!未定义书签。

Java聊天室的设计任务书 1.主要内容 用JA V A实现基于C/S模式的聊天室系统。聊天室分为服务器端和客户端部分,服务器端程序主要负责侦听客户端发来的信息,客户端需要登陆到服务器端才可以实现正常的聊天功能。 2.具体要求 A.服务器端主要功能 (1).在特定端口上进行侦听,等待客户端连接。 (2).用户可以配置服务器端的侦听端口,默认端口为8888。 (3).向已经连接到服务器端的用户发送系统消息。 B. 客户端主要功能 (1).连接到已经开启聊天服务的服务器端。 (2).用户可以配置要连接的服务器端的IP地址和端口号。 (3).用户可以配置连接后显示的用户名。 (4).用户可以向所有人或某一个人发送消息。 3.主要参考文献及运用工具 (1)Bruce Eckel 著Thinking in Java ,李刚著疯狂Java讲义 (2)使用技术:Java 使用开发工具:Eclipse

摘要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次大作业要求使用Java编写一个聊天系统。 一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,但是,由于自己数据库知识的部分遗忘,本程序未连接数据库,采用客户机/服务器架构模式,通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信。 本系统建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息等等功能。

网络编程_基于TCP的简易聊天室_实验报告

网络编程 课程设计说明书 题目名称:基于TCP/IP的网络文字聊天程序设计专业:网络工程

班级: 1201班 学号: 1220140105 姓名:蒋星 指导老师:利平 完成日期: 2014年12月13日

目录 一、实验基本信息概要3 1. 题目要求 3 2. 题目容3 3. 开发环境 3 二、流程图4 三、系统简介5 1.界面5 2. 软件功能 5 3. 系统设计 9 4. 优点与缺点9 四、系统详细设计11 1. ChatServer类11 2. ChatClient 类13 3. SocketException类15 5. 命令协议 15 6. 消息格式 16 五、系统测试16 1. 服务器使用错误16 2. 客户端使用错误17 3. 启动服务器17 4. 启动客户端17 5. 关闭客户端17 6. 启动服务器错误提示18 7. 公开聊天 18 8. 私聊 18 9. 错误的私聊19 10. 更名20 11. 帮助20 12. 非法指令20 13. 非法的指令参数20 14. 连接服务器失败21 六、心得体会21 七、完整代码21 Charserverd.cpp 服务器main函数文件 21 ChatServer.h 服务器类头文件 22 ChatServer.cpp 服务器类 23 ClientInfo.h 客户信息类 33 Charclientd.cpp 客户端main函数 34 ChatClient.h 客户端头文件34 ChatClient.cpp 客户端类 35 InitSock.cpp 初始化WINSOCK类41

SockException.h 异常类41八、[参考文献] 42

聊天室设计报告

聊天室设计报告

————————————————————————————————作者:————————————————————————————————日期: ?

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:冯凯强、许玉军、王明明

完成时间:2015年11月3日 一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。 1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提与基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c.它基于web小浏览器的程序系统的设计与开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学出版社张海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、 使用方便 b、软件的性能 开发该软件应具有的基本要求与功能是实现用户信息数据包括与用户有关 的数据的管理与操作处理,基于MY SQL的数据库的数据管理使该软件有 更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的 输出。 c、输出 用户基本信息和聊天内容 d、输入 用户根据自身需要,发起聊天 e、安全保密方面的要求 设置管理员 2.2 目标

网络编程 基于TCP的简易聊天室 实验报告

网络编程课程设计 -基于TCP的简易聊天室 一、实验基本信息概要 1.题目要求 熟悉异步网络编程的基本方法,掌握异步网络编程和网络协议设计的方法。要求采用select 模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型或完成端口等模型完成编程任务。 2.上机要求 要求采用select模型、WSAAsyncSelect模型、WSAEventSelect模型、重叠模型或完成端口等模型完成下面的任务。 3.题目内容 内容概要:实现一个聊天室,支持多人聊天。也可以增加私聊等功能。 4.开发环境 操作系统:Windows 7 开发语言:C++ 集成开发环境:Microsoft Visual Studio 2010

二、系统简介 1.界面 本软件使用DOS控制台界面,界面风格较为朴素,没用使用复杂的颜色。但是对聊天时界面进行了一定的控制和修正使得界面较为美观,易读。 服务器: 客户端: 2.软件功能 本软件实现了聊天室基本的功能,包括公开聊天,私聊,获取在线用户,更改昵称,获得帮助等。

1)公开聊天 在光标处直接输入消息后按回车即为发送公开聊天,如下图所示。 2)私聊 使用命令【/m 对方UID 消息】即可发送私聊,私聊只有对方可以看到,如下图所示:客户端1,密聊UID为132的用户。 发送后 客户端2,UID为132的用户收到私聊消息。

3)获取在线用户列表 使用命令【/list】即可获得在线用户列表,用户列表会议系统消息的方式返回,如下图所示。命令 发送后 4)更改昵称 使用命令【/name 你的新昵称】即可立即更改昵称,成功修改后服务器会以系统消息的方式返回成功修改的提示。 命令

java实现聊天系统(计算机网络课程设计报告)

计算机网络课程设计报告 学生姓名 学号 班级 指导教师 设计时间

目录 第一章系统描述 设计目的 (3) 系统设计任务 (3) 系统设计分析 (3) 系统功能分析 (4) 第二章功能模块结构 模块划分 (5) 模块结构图 (5) 模块功能 (5) 第三章模块算法实现 服务器实现 (6) 客户端实现 (9) 第四章运行结果 (13) 第五章课程设计总结 (17) 第六章附录 参考文献 (19) 源代码 (19)

第一章系统描述 设计目的 1.学习网络编程的知识,掌握网络编程的方法。 2.进一步掌握编程思想与编程技巧,做到模块化程序设计, 3. 强化语言学习,尤其是Java的图形界面与多线程,需反复练习,熟练掌握。 系统设计任务 聊天室软件的设计与开发:基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。 学习通信编程Socket接口编程,使用TCP或UDP接口完成信息传送,利用多线程技术实现服务器端的多个TCP连接的建立。 系统设计分析 一.实现网络聊天室编程,关键在于Socket通信,程序的功能都是在Socket的基础上一层一层增加的。实现Socket通信的基本方法为以下4个步骤。 在客户端与服务器端创建相应的ServerSockot/Socket实例。 打开连接到Socket的输入输出流 利用输入输出流,按照一定的协议(TCP协议)对Socket进行读写操作 关闭输入输出流和Socket 我们要实现的功能都是在第3步对Socket的输入输出流做相应的操作 二.因为是多客户端,所以必须用线程进行控制,不同的处理线程为不同的客户服务,主线程只负责循环等待,处理线程负责网络连接,接受客户输入的信息,再做相应的处理。 系统功能分析

网络聊天室可行研究报告

网络聊天室可行研究报告

可行性研究报告 项目:网络聊天室 班级:09网络工程 成员:徐海 石祖旭 朱静 陈昌明 徐路 可行性研究报告 (1) 1引言 (3) 1.1编写目的 (3) 1.2背景 (3) 1.3定义 (3) 1.4参考资料 (5) 2可行性研究的前提 (5)

2.1要求 (5) 2.2目标 (6) 3.对现有系统的分析 (7) 3.1处理流程和数据流程 (7) 3.2工作负荷 (7) 3.3费用开支 (7) 3.4人员 (8) 3.5设备 (8) 3.6局限性 (8) 4.进行可行性研究的方法 (8) 4所建议的系统 (8) 4.1对所建议系统的说明 (8) 4.2处理流程和数据流程 (9) 4.3改进之处 (9) 4.4影响 (10) 采用建议系统与现有系统的差别在上面已所过,在此从不同方面具体说一下: (10) (1).设备; (10) (2).现有软件; (10) (3).用户;建议系统使用的新技术是完全基于 原有的系统上的,故用户不必考虑新系统带来的人员培训等等。 (10)

(4).经费支出;建议系统是为了改善原有系统在经费支出过高的缺点的,所以新系统一经使用在经费支出方面一定会得到很好的改善,用户在使用了新系统后只需要花一定资金购买一部分计算机与软件就能实现自动化。 (10) 4.4.1对设备的影响 (10) 采用建议系统后,改进了原有系统的性能所以对设备要求自然更高,建议系统使用了最先进的技术使设备也必须跟着升级。 (10) 4.4.2对软件的影响 (10) 由于建议系统采用了先进的数据库技术以及一系列高技术含量软件,部分用户可能无法使用。可能要安装VC 08运行库。 (10) 4.4.3对用户单位机构的影响 (10) 4.4.4对系统运行过程的影响 (10) 4.4.5对开发的影响 (11) 4.4.6对地点和设施的影响 (11) 4.4.7对经费开支的影响 (11) 建议系统是为了改善原有系统在经费支出过高的缺点的,所以新系统一经使用在经费支出方面一定会得到很好的改善,用户在使用了新系统后只需要花一定资金购买一部分计算机

网络聊天程序的设计和实现报告

程序设计实践 设 计 报 告 课题名称:网络聊天程序的设计和实现学生姓名: 班级: 班内序号: 1 7 学号: 日期:2014.5.25

1)课题概述 1.1课题目标和主要内容 主要内容和目标:(1)按实验步骤使用VC++设计出程序,在此的基础上用VC++或其他工具设计出一个能实现两个人及以上人次聊天的网络程序。 (2)熟悉VisualC++的基本操作;掌握最基本的Client/Server(客户机/服务器)模式的网络编程技术,并在此基础上实现更为复杂的网络编程;基本了解基于对话框的windows应用程序的编写过程;对于Windows Socket编程建立初步概念。 使用的开发平台:VC2013 采用的主要工具:MFC应用程序 1.2系统的主要功能 功能表: 1.建立服务器:程序运行后,可以输入IP地址和端口号后建立服务器,用于监听信息。 2.实现客户端功能:程序运行后,可以输入IP地址和端口号,连入服务器,进入聊天 室聊天。 3.聊天功能:进入聊天室的客户可以给自己取昵称,然后进行多人聊天。界面可以输入 聊天内容、昵称,可以显示聊天信息。 2)系统设计 2.1 系统总体框架 系统框架图:

系统在输入IP和端口之后,可以建立服务器。再打开一个程序作为客户端,输入IP和端口,连接进入服务器聊天室可以进行多人聊天。 2.2 系统详细设计 2.2.1 模块划分图及描述

a)服务器监听模块: 添加一个基于CSocket的CserverSocket类,用于监听套接字。其中CSocket是CAsyncSocket类的派生类,它们都是从CObject类继承下来的。CSocket类是更高层次的网络接口抽象。在服务器端,需要先用指定端口创建套接字,然后调用Listen()函数对制定连接端口进行监听,再创建一个空的CSocket对象。收到请求后,调用Accept()函数对客户端的连接请求进行接收。 具体过程中,需要先添加成员变量和初始化函数声明。然后需要重载OnAccept函数。 b)通信类模块 该部分主要用于创建客户端程序以及数据的传输,其实现方式原理如下: i.客户端程序:首先调用系统的Create()函数,用缺省的端口创建套接字;然后 需要使用函数Connect()连接指定地址的服务器。 ii.数据传输:该部分主要实现信息的传输、接受和处理。首先创建与CSocket 类的对象相连接的CSocketFile类对象,再创建与CSocketFile类的对象相连接 的CArchive类对象,用于储存将要发送的数据,再创建与CSocketFile类的对 象相连接的CArchive类对象,用于存储接收数据,最后只需要发送和接收数 据。 具体实现方式为: 1.添加用于发送、接收和存储的成员变量以及初始化函数声明。 2.添加用于发送消息的SendMessage()函数,添加关闭套接字的函数 CloseSocket()。 3.添加函数static int GetIpAddress()函数获取本地IP地址。 4.重载函数OnClose(),OnReceive(),分别用于服务器处理关闭套接字以及接 收数据。 c)信息模块: 为项目添加基于CObject类的CMessg类,主要用于保存数据。核心包括定义CString 类型的变量m_strText,另外需要修改构造函数和Serialize函数。 d)窗口界面模块: 首先创建一个基于对话框的项目,再设计对话框:添加一个ListBox控件显示所有聊天内容,并为其关联Clistbox类型的成员变量;添加一个EditBox控件输入发送聊天信息,并为其关联CString类型成员变量;添加一个IP控件输入服务器地址,并为其关联IP控件类型成员变量;添加一个EditBox类型控件输入服务器端口,并为其关联UNIT类型的成员变量;添加一个EditBox类型控件输入用户昵称,并为其关联一个CString类型成员变量;对吼添加三个按钮分别表示“发送消息”、“建立服务”和“连接服务器”,设置好各自的ID。 在对窗口的处理中,需要实现以下几点:

网络聊天室可行性研究报告

可行性研究报告 项目:网络聊天室 班级: 09网络工程 成员:徐海 石祖旭 朱静 陈昌明 徐路 可行性研究报告 (1) 1引言 (5) 1.1编写目的 (5) 1.2背景 (5) 1.3定义 (6) 1.4参考资料 (7) 2可行性研究的前提 (8) 2.1要求 (8) 2.2目标 (9) 3.对现有系统的分析 (11) 3.1处理流程和数据流程 (11) 3.2工作负荷 (11)

3.3费用开支 (12) 3.4人员 (12) 3.5设备 (12) 3.6局限性 (12) 4.进行可行性研究的方法 (12) 4所建议的系统 (13) 4.1对所建议系统的说明 (13) 4.2处理流程和数据流程 (13) 4.3改进之处 (14) 4.4影响 (15) 采用建议系统与现有系统的差别在上面已所过,在此从不同方面具体说一下: (15) (1).设备; (15) (2).现有软件; (15) (3).用户;建议系统使用的新技术是完全基于原有的系统上的, 故用户不必考虑新系统带来的人员培训等等。 (15) (4).经费支出;建议系统是为了改善原有系统在经费支出过高的 缺点的,所以新系统一经使用在经费支出方面一定会得到很好的改善,用户在使用了新系统后只需要花一定资金购买一部分计算机与软件就能实现自动化。 (15) 4.4.1对设备的影响 (15) 采用建议系统后,改进了原有系统的性能所以对设备要求自然更

高,建议系统使用了最先进的技术使设备也必须跟着升级。. 15 4.4.2对软件的影响 (15) 由于建议系统采用了先进的数据库技术以及一系列高技术含量软件,部分用户可能无法使用。可能要安装VC 08运行库。15 4.4.3对用户单位机构的影响 (15) 4.4.4对系统运行过程的影响 (16) 4.4.5对开发的影响 (16) 4.4.6对地点和设施的影响 (16) 4.4.7对经费开支的影响 (17) 建议系统是为了改善原有系统在经费支出过高的缺点的,所以新系统一经使用在经费支出方面一定会得到很好的改善,用户在使用了新系统后只需要花一定资金购买一部分计算机与软件就能实现自动化。 (17) 4.5局限性 (17) 4.6技术条件方面的可行性 (17) 5投资及效益分析 (17) 5.1支出 (18) 就目前使用的开发技术来说建议系统的功能目标应该能够达到; 利用现有的技术在规定的期限内开发工作基本能够完成。基本支出为50万。 (18) 5.1.1基本建设投资 (18) 5.1.2其他一次性支出 (18)

java实现聊天系统计算机网络课程设计报告

计算机网络课程设计报告学生姓名 学号 班级 指导教师 设计时间

目录 第一章系统描述 设计目的 (3) 系统设计任务 (3) 系统设计分析 (3) 系统功能分析 (4) 第二章功能模块结构 模块划分 (5) 模块结构图 (5) 模块功能 (5) 第三章模块算法实现 服务器实现 (6) 客户端实现 (9) 第四章运行结果 (13) 第五章课程设计总结 (17) 第六章附录 参考文献 (19) 源代码 (19) 第一章系统描述 设计目的 1.学习网络编程的知识,掌握网络编程的方法。 2.进一步掌握编程思想与编程技巧,做到模块化程序设计,

3.强化语言学习,尤其是Java 的图形界面与多线程,需反复练习,熟练掌握。 系统设计任务 聊天室软件的设计与开发:基本要求可以完成群聊、私人聊天,实时发送和显示聊天信息,完成好友列表;进一步要求带表情,附件发送,聊天信息的加密传送,设置黑名单等。 学习通信编程Socket 接口编程,使用TCP 或UDP 接口完成信息传送,利用多线程技术实现服务器端的多个TCP 连接的建立。 系统设计分析 一.实现网络聊天室编程,关键在于Socket 通信,程序的功能都是在Socket 的基础上一层一层增加的。实现Socket 通信的基本方法为以下4个步骤。 (1) 在客户端与服务器端创建相应的ServerSockot/Socket 实例。 (2) 打开连接到Socket 的输入输出流 (3) 利用输入输出流,按照一定的协议(TCP 协议)对Socket 进行读写操作 (4) 关闭输入输出流和Socket 我们要实现的功能都是在第3步对Socket 的输入输出流做相应的操作 户服务,主线程只负责循环等待,处理线程负责网络连接,接受客户输入的信息,再做相应的处理。 系统功能分析 本系统可以通过网络进行聊天,采用客户端服务器模式,所以程序简介清晰易懂,而且用户都是在客户端进行活动,方便对用户的管理,也使得程序运行与差错简单起来。采用了多线程技术,可以做到多人同时在线,提高了系统的性能,增强了系统的实用性。有简单的客户端界面,方便用户使用。采用的是TCP 协议,这是可靠的,稳定的协议,这样不会丢失任何包,也就不会丢失任何信息。 本系统实现的功能有: 1. 用户名字登录 2. 用户之间的群聊

聊天室设计报告

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:冯凯强、许玉军、王明明 完成时间:2015年11月3日一、可行性研究报告 可行性研究报告(ISO标准) 编者说明: 在立项时,应该对项目进行综合分析,探讨项目的经济、社会、技术可行性,从而为决策提供基础。该模板为ISO标准文档模板,其不仅适用于软件项目,对于其它的系统项目也适用。

1.引言 1.1 编写目的 该聊天室项目可行性研究报告是对项目课题的全面考虑,是项目分析员对下一步工作进行的前提,是软件开发人员正确成功开发项目的前提和基础。写可行性研究报告可以使软件开发团体尽可能早的估计研究课题的可行性,较早的认识到系统方案的缺陷,可以少花时间和精力,也可减少成本资金,避免专业性的问题。 1.2 背景 a. 待开发系统的名称:信息交流系统 b 用户:大众 c. 它基于web小浏览器的程序系统的设计和开发, 服务平台:appserv-win 开发语言:PHP 数据库:MY SQL 1.3 定义 技术可行性:分析功能,性能以及限制条件,能否是一个技术上可实现的系统 经济可行性:估计开发费用已及最终从开发成功的系统所获得的收入或利益,衡量比较支出的费用和收到的利益 1.4 参考资料 《软件工程导论》(第6版)清华大学出版社张海藩牟永敏编著 可行性研究的前提 2.1 要求 a、聊天室功能 用户的聊天功能,包括数据输入、修改、删除,并要达到界面美观又好、使用方便 b、软件的性能 开发该软件应具有的基本要求和功能是实现用户信息数据包括和用户有关的数据 的管理和操作处理,基于MY SQL的数据库的数据管理使该软件有更优异的性能,软件的基本数据流动为用户数据的输入,用户信息及数据的输出。 c、输出 用户基本信息和聊天内容 d、输入 用户根据自身需要,发起聊天 e、安全保密方面的要求 设置管理员 2.2 目标 该软件的设计目标必须尽量达到人力和设备费用的节省,软件的整个设计过程必须通过生产能力的提高、人员工作效率的提高等等使软件开发成本最小化。 2.3 条件、假定和限制 a、本聊天室建议使用寿命为5-10年 b、法律方面的限制:(1)、严禁危害国家信息安全(2)、严禁损害国家荣誉和利益(3)、严禁传播不良信息(5)、严禁抄袭 2.4 进行可行性研究的方法 成本效益分析、对估算问题的看法、软件的作用范围、软件的成本估算、速度安排3.对现有系统的分析 3.1 处理流程和数据流程 该系统的数据处理和流程基本为用户数据录入和查询,管理员删除等,流程图如下: 用户管理

网络聊天室系统设计与实现

科研训练 网络聊天室系统设计与实现Design and implementation of network chatroom system 学生姓名XXX 专业软件工程 学号1305XXXXX 指导教师李XX 祝XX 学院计算机科学技术学院 二〇一六年六月

目录 一、引言 (1) 二、需求分析 (1) 2.1 系统运行环境需求 (1) 2.2 模块功能分析 (1) 2.3系统功能结构 (3) 2.4系统数据流图 (3) 2.4.1顶层数据流图 (3) 2.4.2一层数据流图 (3) 2.4.3二层数据流图 (4) 2.5数据字典 (5) 三、概要设计 (5) 3.1系统总体结构设计 (5) 3.1.1结构设计系统 (5) 3.1.2系统功能模块结构 (6) 3.2数据库设计 (8) 3.2.1概念设计 (8) 3.2.2逻辑设计 (8) 3.2.3物理设计 (9) 四、详细设计 (9) 4.1流程图 (9) 4.1.1用户注册登录 (9) 4.1.2在线用户显示模块 (11) 4.1.3用户交流聊天模块 (12) 4.1.4聊天信息显示模块 (13) 4.1.5系统消息显示模块 (14) 4.1.6管理员管理用户模块 (14) 4.1.7辅助功能 (15) 4.2算法 (16) 4.2.1用户对话存储算法 (16) 4.2.2检测用户是否被踢算法 (16) 4.2.3 检测当前用户是否有新消息算法 (17) 4.3界面设计 (18) 4.3.1登录首页 (18)

4.3.2注册界面 (19) 4.3.3聊天室界面 (20) 4.4工程结构设计 (20) 4.5各类功能设计 (21) 4.5.1实体类 (22) 4.5.2数据库操作Dao层 (23) 4.5.3监听器 (23) 4.5.4业务逻辑service层 (23) 4.5.5工具箱Utils (24) 4.5.6 Actions (24) 五、系统实现 (24) 5.1用户注册登录模块 (25) 5.1.1用户注册 (25) 5.1.2用户登录 (26) 5.2在线用户显示模块 (28) 5.3用户交流聊天模块 (29) 5.4聊天信息显示模块 (30) 5.5系统消息显示模块 (32) 5.6管理员管理用户模块 (33) 5.7辅助功能 (33) 六、总结与体会 (35) 6.1开发中遇到的问题 (35) 6.2问题分析与解决方法 (35) 6.3经验与教训 (36) 参考文献 (37) 附录 (38)

聊天室程序设计报告

实验5 掌握简单的网络通讯技术 实验6 掌握基于典型协议的的网络通讯技术 一实验目的 1.熟悉Socket的通讯机制,了解网络程序的设计方法。 2. 熟悉典型协议的通讯机制,掌握基于它们的网络系统设计方法。如TCP、UDP。 二实验环境 1.Windows7 2.Visual C++ 6.0 三实验程序设计 1.实验原理 1.C/S模式 C/S模式是指一个服务器同时为多个客户端服务。并发性是C/S模式的的基础,正是由于并发性的支持,多个客户端能够获得同一种服务,而不必等待服务器完成对上一个请求的处理。 在C/S模式中,当请求到达服务器时,服务器将它交给一个控制线程,它能与已有的线程并发的执行。 在设计并发服务器时,一般服务器代码由两部分组成,第一部分代码负责监听并接收客户端的请求,还负责为客户端请求创建新的服务线程;另一部分代码负责处理单个客户机请求,如与客户机交换数据,提供具体服务。 下图所示为服务器创建多个线程来为多个客户机服务。 2.基于TCP的socket通信 服务器与客户端是通过套接字来进行通信的。 在基于TCP的网络通信程序中,首先服务器端通过socket()函数创建套接字,然后通过bind()函数来命名套接字,调用listen()函数开启服务器端的监听。接着执行accept()函数来接收客户的连接,服务器阻塞等待客户连接请求,直到有客户请求连接。 客户端创建套接字,接着通过connect()函数请求连接服务器,连接成功后,就可以与服务器进行通信了。 服务器与客户机通过send()各recv()调用来进行信息的发送和接收。只有当有信息可接收时,recv()才返回,否则将阻塞。

Java网络聊天室报告

Java网络聊天室课程报告 1系统开发的意义及需求分析 1.1整体思路 该C/S模式的聊天系统,就是服务器来提供服务端连接响应,客户端主动的发起连接请求。当多个用户同时连接到服务器时,经由服务器的接收与转发便可以实现客户之间的通信。 对于整体系统的流程,也是分为两部分,即客户端的发起请求,服务器响应请求。首先是客户端设置所想要连接的服务器,然后客户端就会根据设置的服务器IP地址,向服务器发起建立连接请求。而服务器端是始终在监听网络状态的,主要检测到有一个连接请求,那么服务器就会给当前的发起端分配一个服务线程,用于处理它的各种请求。 1.2功能需求分析 实现网络聊天的功能,采用Windows Socket(或Java Socket)编程,服务器与客户端采用了TCP/IP连接方式,在设计聊天方案时,可将所有信息发往服务器端,再由服务器进行处理,服务器端是所有信息的中心。聊天系统不外乎两个方面,服务器端和客户端。简单分析一下两个方面所要完成的任务。 服务器端的任务包括: 1、服务器端应当建立一个ServerSocket,并且不断进行侦听是否有客户端连接或者断开连接。 2、服务器端应当是一个信息发送中心,所有客户端的信息都传到服务器端,由服务器端根据要求分发信息。 以上就是服务器端最主要的两个任务。不难看出,服务器端的任务并不复杂。 客户端应该完成的任务包括: 1、与服务器端建立通信通道,向服务器端发送信息。 2、接收来自服务器的信息。 相对服务器而言,客户端的任务更加简单,有了以上的简单分析,可以知道,解决上述四个问题,即完成了该聊天系统的核心。 2.系统分析与设计方案 2.1开发环境及工具 本系统所用的工具:

网络编程课程设计报告AndroidSocket聊天室

网络编程课程 设计报告 课程名称 java程序设计之网络编程 题目 Android Socket 聊天室 专业信息管理与信息系统 班级 组长 副组长 组员 指导教师

目录 1设计目的 (3) 2 开发工具和开发环境 (3) 3 设计原理 (3) 3.1 实现思想 (3) 3.2服务器端工作流程 (3) 3.3 客户端工作流程 (3) 4 系统流程图 (4) 5系统设计 (4) 5.1系统功能 (5) 5.2系统架构 (5) 5.3模块设计 (5) 6 小结 (6) 参考文献 (6)

一、设计目的 随着人们对手机的依赖程度越来越深和人们相互之间的交流越来越多,开发一款手机聊天软件便显得尤为重要。我组开发的手机聊天软件-Android Socket 聊天室不仅可以让人们相互之间的交流变得越来越便捷,而且通过对Android Socket 聊天室的开发,使得我们能更好的掌握网络编程知识,锻炼自己的java编程能力。 二、开发工具和开发环境 1、开发工具: Eclipse 2、开发环境:JDK 1.7 三、设计原理 1、实现思想 Socket是TCP/IP协议上的一种通信,在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。 2、服务器端工作流程 (1)创建服务器端套接字并绑定到一个端口上 (2)套接字设置监听模式等待连接请求 (3)接受连接请求后进行通信

(4)返回,等待赢一个连接请求 3、客户端工作流程 (1)创建客户端套接字(指定服务器端IP地址与端口号) (2)连接(Android 创建Socket会自动连接) (3)与服务器端进行通信 (4)关闭套接字 四、系统流程图

相关主题
文本预览
相关文档 最新文档