文档库 最新最全的文档下载
当前位置:文档库 › VC实现聊天室软件

VC实现聊天室软件

VC实现聊天室软件
VC实现聊天室软件

《网络程序设计》课程设计报告书

题目:简单的聊天室软件

专业:网络工程

一、题目及要求

1、简单的聊天室程序

本题是一个简单的聊天室程序,采用客户/服务器模式,分为客户端程序和服务器端程序。由于服务器只能支持一个客户,实际上是一个点对点通信的程序。客户端程序和服务器程序通过网络交换聊天字符串内容,并在窗口的列表框中显示。

本实例程序的技术要点是:

●如何从CasyncSocket类派生出自己的WinSock类。

●理解WinSock类与应用程序框架的关系。

●重点学习流式套接字对象的使用。

●处理网络事件的方法。

二,需求分析

2.1 设计目的

综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以Visual C++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。

2.2 设计要求

采用客户/服务器模式,分为客户端程序和服务器端程序。服务器采用WINSOCK I/O模型中的任一种,支持多个客户同时在线聊天。客户端程序和服务器程序通过网络交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之间的私聊(可以通过服务器中转,或考虑UDP打洞直接建立端端连接)。

课程设计要求设计并编程完成两个方面的内容:首先建立一个使用TCP协议的聊天室服务器,这个服务器可以同时支持多个用户的在线聊天;其次设计一个可以和服务器通信的聊天室客户端。

2.3 功能要求

?支持多个客户端的连接,在服务器和多个客户端之间进行数据传输;

?接收客户端发送的消息,并显示在一个列表框中;

?在用户连接上后有提示,显示出连接的用户名字;

?发送信息时可以显示聊天的所有记录;

2.4 系统主要功能和主要功能描述:

服务器端聊天程序必须能够做3件事情:

(1)服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。

(2)服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。

(3)服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。

这些要求可以通过CSocket类提供的功能实现。从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。服务器只需要一个侦听套接字CListenSocket,然后根据客户的连接请求动态创建客户套接字CClientSocket。客户套接字的数量是不可预知的,因此需要一个列表来记录。MFC的CPtrList类就能实现这种功能。

客户端聊天程序需要完成以下几个功能:

(1)客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接,并且随时检测连接的状态。

(2)客户端聊天程序要把用户输入的信息及时发送到聊天服务器。一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息

发送出去,才能及时地满足用户的交互需求。

(3)要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应。

(4)在用户退出聊天过程是要关闭与服务器的连接。比较好的做法是提前通

知服务器或者直接给服务器发送一条退出通知,使得服务器能够及时掌握客户端的连接状态,把对方客户的退出信息及时发送到对等实体上。

客户端聊天程序需要使用一个通过CSocket类派生出来的CChatSocket类来实现。该套接字用来发送一个与服务器的连接请求和维持与服务器的连接,发送和接收聊天信息,完成上述各项功能。

3设计流程图

根据对用户的要求及功能设置可以得到以下的流程图3.1,用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天。客户端的聊天分为对所有人的信息和私聊的信息,该信息应通过程序控制分别进行处理。

图3.1 设计流程图

5 设计的总结和体会

该次课程设计的制作我主要是参照了图书馆内的相关书籍,找到一个类似的程序,然后按照书上的内容一步步的做出来了,虽然这个程序算不上是我自己写出来的,但通过这样的一个过程,还是让我学会了很多东西,也算能比较熟练地掌握MFC这一个软件了,这算是一个不小的收获吧,而且,在做这个程序的过程中,让我认识到了在做这样程序中,遇到解决不了的问题与同学的讨论时很重要的,譬如可以以运行,但是就是无法出现连接的显示和状态。最后与同学讨论后,才知道是服务器端有了错误,没有设置自己的IP地址,然后对于客户端进行了一番修改,才终于出现了上述的结果。虽然没有彻底做的出来,但是还是比较开心的,因为自己知道了哪里不足,哪里不可以,可以在以后多多的做练习来充实自己。

在课程设计过程中,收获知识,提高能力的同时,我也学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把课程设计的精神带到生活中,不畏艰难,勇往直前!

我以后还是需要多多的练习,多多的勤奋,这样才有可能让自己有信心,有动力,让自己不至于懂的太少而怯场,因为不懂而不会做,相信自己以后会编写出让自己满意的程序和软件的。

附:源代码

I服务器:

// ServerDlg.cpp : implementation file

//

#include "stdafx.h"

#include "Server.h"

#include "ServerDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[ ] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) {

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CServerDlg dialog

CServerDlg::CServerDlg(CWnd* pParent /*=NULL*/) : CDialog(CServerDlg::IDD, pParent)

{

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICONAPP); }

void CServerDlg::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_LIST_USER, m_lbUser);

DDX_Text(pDX, IDC_EDIT_DISPLAY, m_strDisplay); }

BEGIN_MESSAGE_MAP(CServerDlg, CDialog) ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BN_START, OnBnStart)

ON_BN_CLICKED(IDC_BN_CLOSE, OnBnClose)

ON_MESSAGE(WM_RECEIVE, OnReceive)

ON_MESSAGE(WM_CLIENTCLOSE, OnClientClose) ON_MESSAGE(WM_ACCEPT, OnAccept)

ON_WM_DESTROY()

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CServerDlg message handlers

BOOL CServerDlg::OnInitDialog()

{

CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);

ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

m_iNetPort = 3127;

m_Server.Initialize(this);

m_bServer = FALSE;

GetDlgItem(IDC_BN_CLOSE)->EnableWindow(FALSE);

return TRUE; // return TRUE unless you set the focus to a control

}

void CServerDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

void CServerDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

HCURSOR CServerDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CServerDlg::OnBnStart()

{

// 创建套接字

m_Server.Create(m_iNetPort);

// 开始监听

m_Server.Listen();

// 显示

CString strInfo;

strInfo.LoadString(IDS_CREATE_SERVER);

ShowInDisplay(strInfo);

m_bServer = TRUE;

GetDlgItem(IDC_BN_START)->EnableWindow(FALSE);

GetDlgItem(IDC_BN_CLOSE)->EnableWindow(TRUE); }

void CServerDlg::OnBnClose()

{

CloseServer();

GetDlgItem(IDC_BN_START)->EnableWindow(TRUE);

GetDlgItem(IDC_BN_CLOSE)->EnableWindow(FALSE); }

void CServerDlg::OnAccept()

{

// 创建新客户

CMySocket *pNewClient = new CMySocket;

pNewClient->Initialize(this);

m_Server.Accept(*pNewClient);

// 放入链表中

m_lsClient.AddTail(pNewClient);

}

void CServerDlg::OnClientClose(WPARAM wParam, LPARAM lParam)

{

CMySocket *p_delClient = (CMySocket*)wParam;

// 关闭该用户

p_delClient->ShutDown();

char buffer[BUFFERSIZE];

while(p_delClient->Receive(buffer, BUFFERSIZE)>0);

p_delClient->Close();

// 在用户链表中删除该用户

POSITION psCur, psList = m_lsClient.GetHeadPosition();

CMySocket *p_curClient;

while(psList!=NULL)

{

psCur = psList;

p_curClient = (CMySocket *)m_lsClient.GetNext(psList);

if(p_delClient==p_curClient)

{

m_lsClient.RemoveAt(psCur);

break;

}

}

// 发送信息告诉其他用户该客户退出

CString strMsg;

strMsg.LoadString(IDS_CLIENT_CLOSE);

NETMESSAGE netMessage(PTC_CLIENT_QUIT, p_delClient->GetName(), _T(""), p_delClient->GetName() + strMsg);

SendToAllClient(netMessage);

// 界面上清理该用户信息

m_lbUser.DeleteString(m_lbUser.FindString(-1, p_delClient->GetName()));

ShowInDisplay(p_delClient->GetName() + strMsg);

// 删除该用户

delete p_delClient;

}

void CServerDlg::OnReceive(WPARAM wParam, LPARAM lParam) {

CMySocket *p_curClient = (CMySocket*)wParam;

NETMESSAGE netMessage;

p_curClient->Receive((char *)&netMessage, sizeof(netMessage));

switch(netMessage.type)

{

case PTC_NEW: // 新客户加入

NewClientAdd(p_curClient, &netMessage);

break;

case PTC_SAY: // 普通聊天

ShowMessage(netMessage);

break;

}

// 把加工过的信息发送给其他用户

SendToAllClient(netMessage);

}

void CServerDlg::CloseServer()

{

if(!m_bServer) return;

// 向所有客户发送服务端关闭的信息

CString strInfo;

strInfo.LoadString(IDS_CLOSESERVER);

NETMESSAGE netMessage(PTC_SYSTEM, _T(""), _T(""), strInfo);

SendToAllClient(netMessage);

// 服务端界面显示关闭信息

ShowInDisplay(strInfo);

// 关闭服务端

m_Server.Close();

// 关闭客户端

char buffer[BUFFERSIZE];

CMySocket *m_pClient;

POSITION psList = m_lsClient.GetHeadPosition();

while(psList!=NULL)

{

m_pClient = (CMySocket *)m_lsClient.GetNext(psList);

m_pClient->ShutDown();

while(m_pClient->Receive(buffer, BUFFERSIZE)>0);

m_pClient->Close();

delete m_pClient;

}

m_lsClient.RemoveAll();

m_bServer = FALSE;

}

// 向所有户发出信息

void CServerDlg::SendToAllClient(const NETMESSAGE &netMessage) {

CMySocket *m_pClient;

POSITION psList = m_lsClient.GetHeadPosition();

while(psList!=NULL)

{

m_pClient = (CMySocket *)m_lsClient.GetNext(psList);

m_pClient->SendMsg(netMessage);

}

}

void CServerDlg::ShowInDisplay(CString str)

{

m_strDisplay += str + "\r\n";

UpdateData(false);

}

void CServerDlg::OnDestroy()

{

CDialog::OnDestroy();

// TODO: Add your message handler code here

}

// 新用户加入

void CServerDlg::NewClientAdd(CMySocket *p_client, NETMESSAGE *netMessage)

{

// 存入用户名字

p_client->SetName(netMessage->form);

// 在列表框中显示该用户

m_lbUser.AddString(p_client->GetName());

// 发送用户列表给该客户

NETMESSAGE netMsg(PTC_USER_LIST, _T(""), _T(""), _T(""));

int iListLen = m_lbUser.GetCount();

CString strMsg;

for(int index=m_lbUser.GetTopIndex(); index

{

m_lbUser.GetText(index, strMsg);

strcpy(netMsg.data, (LPCTSTR)strMsg);

p_client->SendMsg(netMsg);

}

// 加工信息

strMsg.LoadString(IDS_NEW_CLIENT);

strMsg = p_client->GetName() + strMsg;

strcpy(netMessage->data, (LPCTSTR)strMsg);

// 显示该用户进入

ShowInDisplay(strMsg);

}

// 显示普通消息

void CServerDlg::ShowMessage(NETMESSAGE netMessage) {

CString strTo = netMessage.to;

if(strTo==_T(""))

{

strTo = "所有人";

}

CString strForm = netMessage.form;

CString strMsg = netMessage.data;

CString strOut = strForm + "对" + strTo + "说:" + strMsg;

ShowInDisplay(strOut);

}

II客户端:

// ClientDlg.cpp : implementation file

//

#include "stdafx.h"

#include "Client.h"

#include "ClientDlg.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#undef THIS_FILE

static char THIS_FILE[ ] = __FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog

{

public:

CAboutDlg();

enum { IDD = IDD_ABOUTBOX };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)

{

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CClientDlg dialog

CClientDlg::CClientDlg(CWnd* pParent /*=NULL*/)

: CDialog(CClientDlg::IDD, pParent)

{

m_strDisplay = _T("");

m_strSend = _T("");

m_bWhispering = FALSE;

m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CClientDlg::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

DDX_Control(pDX, IDC_LIST_USER, m_lbUser);

DDX_Text(pDX, IDC_EDIT_DIAPLAY, m_strDisplay);

DDX_Text(pDX, IDC_EDIT_SEND, m_strSend);

DDX_Check(pDX, IDC_CHECK_WHISPERING, m_bWhispering); }

BEGIN_MESSAGE_MAP(CClientDlg, CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BN_CONNECT, OnBnConnect)

ON_BN_CLICKED(IDC_BN_CLOSE, OnBnClose)

ON_BN_CLICKED(IDC_BN_SEND, OnBnSend)

ON_MESSAGE(WM_RECEIVE, OnReceive)

ON_MESSAGE(WM_SOCKETCLOSE, OnServerClose)

ON_MESSAGE(WM_SEND, OnSend)

ON_MESSAGE(WM_CONNCET, OnConnect)

ON_LBN_DBLCLK(IDC_LIST_USER, OnDblclkListUser)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CClientDlg message handlers

BOOL CClientDlg::OnInitDialog()

{

CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);

if (pSysMenu != NULL)

{

CString strAboutMenu;

strAboutMenu.LoadString(IDS_ABOUTBOX);

if (!strAboutMenu.IsEmpty())

{

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);

}

}

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// 参数初始化

m_Socket.Initialize(this);

m_strNetIP = _T("127.0.0.1");

m_iNetPort = 3127;

m_bConnect = FALSE;

GetDlgItem(IDC_BN_CLOSE)->EnableWindow(FALSE);

GetDlgItem(IDC_BN_SEND)->EnableWindow(FALSE);

return TRUE; // return TRUE unless you set the focus to a control

}

void CClientDlg::OnSysCommand(UINT nID, LPARAM lParam)

{

if ((nID & 0xFFF0) == IDM_ABOUTBOX)

{

CAboutDlg dlgAbout;

dlgAbout.DoModal();

}

else

{

CDialog::OnSysCommand(nID, lParam);

}

}

void CClientDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

}

HCURSOR CClientDlg::OnQueryDragIcon()

{

return (HCURSOR) m_hIcon;

}

void CClientDlg::OnBnConnect()

{

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)进行数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。

毕业设计-聊天室的设计与实现

编号: 毕业论文 题目:聊天室的设计与实现 院(系): 专业:计算机及应用 学生姓名:唐靖琳 学号: 030111301444 指导教师:李志远 职称:教授 题目类型:理论研究实验研究工程设计工程技术研究软件开发 2012年4月15日

随着Internet的普及,很多人已经不满足于仅仅上网冲浪,而希望能参与其中的开发与研究。怎样做好网页便是人们所渴望的事情。想做好一个网页就要选好工具,我的课题是聊天室的设计与制作。因此,我这里选择的开发软件是Macromedia Dreamweaver 8。Macromedia Dreamweaver 8目前作为最主流的ASP开发工具,它可以将前台界面设计和后天程序设计充分结合,包括asp等。而微软的asp和目前推广的https://www.wendangku.net/doc/c912273961.html,,是广大网页后台设计师的首选,其应在IIS服务器环境中运行并通过调用ACCESS数据库来实现。 在线聊天室是一种十分普及的动态交互系统,是一种比较直观的且容易接受的交流方式,特别对于刚刚接触的新网民,在线聊天室相对于其他网络交流方式来说有很多不可比拟的优势,比如操作简单,界面简单,信息显示十分直观,十分适合新手;信息的及时传递无延迟,用户可以十分自如地和他人交流而无须等待。这些优点也是聊天室出现这么长时间以来的仍然被广泛使用的原因。至今在线聊天室仍是被很多网站作为吸引网民的利器. 本人制作的是在线聊天室的功能实现,实现用户的登陆和注册,用户在线聊天功能,私聊功能及管理员管理用户功能。聊天的界面有框架构成的。 建设此聊天室,主要目的是为了能够和相同爱好的朋友提供一个实时交流的平台,而不会因为距离而疏远了。 关键词:聊天室;ASP IIS服务器;ACCESS数据库;Macromedia Dreamweaver 8

基于JAVA实现聊天室

第1章绪论 1.1 论文背景及课题来源 随着网络技术的发展和普及,Internet已经成为人们获取有关信息和相互交流的重要途径之一,越来越多的机构和组织开始利用网络资源传递、发布、收集和管理信息。这对各种类型的网络提供一次很大的挑战与机遇,特别是通过网络进行信息交互的这种活动,更加使网络的经营方式充满了活力和机动性[5]。 基于C/S模型的Java聊天室是应用于网络交流领域的系统,它的主要特点有:(1)通用性:聊天室系统在各种各样的网络中均可以运行,系统具有较高的可移植性和使用性; (2)实用性:系统具有良好的人机界面,便于各类使用者操作,提供了人性化的服务; (3)及时性:通过网络的连接,系统双方的交流可以在短期内进行,相比与传统面对面的交流节省不少时间[15]。 聊天室中聊天内容的及时性和准确性是极其重要的,它主要针对当今社会快节奏生活,人们没有很多时间来等信息。本系统提供的功能便于系统使用双方的信息交流,有效的提高了使用者的使用效率,缩短了使用者的使用时间[6]。 1.2 本课题在国内外的发展状况 随着网络技术的发展和普及,多数网站纷纷利用自己的网络资源建立聊天室,并为客户提供各种各样便捷的服务。中国的一些龙头网站,如sina,有很多聊天室,供国内外的不同的人们进行不同话题的讨论,不仅将会员发展由国内延伸到国际,更是为提高自身的知名度提供了方便[2]。 聊天室的开放性、信息资源的多样性可为网站发展提供优良的广告宣传和商品推广,这是其他网站活动方式所无法比拟的,聊天室趋向方便化、快捷化是各大网站成长的必然经历的阶段[8]。 1.3 应解决的问题及系统开发意义 本系统针对聊天室用户的需要,建立了客户端和服务器端。主要解决的问题包括:(1)服务器端和客户端要实现界面化,并且界面尽量人性化。 (2)服务器端能够正确的启动,并且时刻监视客户端,保持与客户端的连接。 (3)客户端能够快速准确的连接上服务器端,发送的信息经服务器端可以转发给其他客户。 (4)异常处理,对于用户的不正确的操作系统应该有提示。 基于C/S的Java聊天室系统它的开发意义在于为人们之间相互交流提供了一个快捷、方便的应用平台。大型网站可以通过聊天室来提高自身的知名度,增加的访问流量。

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

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

目录

一、引言 随着网络的大幅度普及,以及网络技术快速发展,人们通过网络进行交流的方式发生着巨大的变化,人们不再拘泥于移动电话的通话模式,越来越多的人通过网络聊天工具进行交流,网络聊天室便是非常典型的聊天工具之一。聊天室系统的即时交流方式满足了网络中人们同时与多人进行聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。 本设计所完成的网络聊天室具有常用聊天室的所有功能,包括使用账号登录聊天室、注册账号、显示在线用户列表、显示系统消息、两人之间进行私密聊天、消息提醒、发送表情、修改发送文字颜色;同时,为了管理聊天室中的用户使用语言的文明,赋予管理员踢出使用不文明语言的用户功能,显示全部聊天信息。该系统采用B/S(浏览器/服务器)结构进行开发,参考网络中正在使用的大型聊天室的架构、分析聊天室可实现功能,结合本次设计的相关要求,进行开发设计并写出需求分析说明书。 该系统具体开发环境:使用专业版作为服务器运行平台,服务器开发语言使用Java语言,前台使用Jsp技术、JavaScript、Jquery语言,系统框架使用 Struts2+Hibernate+Spring框架,后台数据库使用MySql数据库。 二、需求分析 该系统采用B/S模式设计,开发目的主要是提供一个基于网络的安全文明的供多人聊天社交平台。 系统运行环境需求 该系统是在windows 专业版操作系统下,搭建的运行平台,使用myEclipse作为开发工具,mySql作为数据库,Java语言作为系统后台开发语言。 JSP技术作为前台开发语言,其中使用JavaScript以及Jquery作为脚本语言。工程框架使用Struts+Spring+Hibernate框架。 (1)服务器配置: (2)客户端要求配置: 谷歌浏览器、狐火浏览器以及IE浏览器以上版本。 模块功能分析 (一)用户注册登录模块 新用户在使用该聊天室系统时,必须先进行注册新用户操作,后台将注册信息添加到数据库中,用于胡勇登录验证;在注册成功之后再进行登录; 当用户名与密码匹配成功,即可进入聊天室系统。 (二)在线用户显示模块 当用户登录进入系统后,该页面实现在线用户的统计,并将在线用户依次显示出来。如果当前用户属于管理员角色,则在普通用户角色的右边显示“踢下线”链接,如果当前用户属于普通用户角色,则正常显示在线用户名。 (三)用户交流聊天模块 该模块主要负责发送信息内容,选择聊天对象;除此之外,可以修改聊天内容的字体颜色以及发送的表情。发言的颜色和发言的表情通过下拉式组合框实现。发言内容书写完毕后。通过点击“发送”按钮,发送聊天内容。 (四)聊天信息显示模块 当用户选择聊天对象并发送聊天内容后,显示出当前发送的内容以及之前的历史聊天内容,聊天的内容只有对话的两人可见,其他人不可见。当用户退出系统后,再次登录进入聊天室时,两人的对话记录依然存在。

聊天室系统设计报告

青岛科技大学操作系统课程设计 学生班级计算机132班 学生学号1308010204 学生姓名王永远 2016 5 18 ______年 ___月 ___日

目录 设计题目:聊天室系统 (3) 一、设计目的及要求 (3) 1.1设计目的 (3) 1.2设计要求: (3) 二、技术背景 (3) 2.1网络编程 (3) 2.2网络通信 (3) 2.3 Socket (3) 2.4 TCP传输 (4) 2.5 Java的多线程机制 (4) 三、需求分析 (4) 3.1客户端 (4) 3.1.1登录 (4) 3.1.2多人聊天 (4) 3.1.3单人聊天 (5) 3.2服务器端 (5) 四、总体设计 (5) 4.1设计思想流程图 (5) 4.2设计思想分析 (6) 五、详细设计 (6) 5.1客户端设计 (7) 5.1.1登录界面 (7) 5.1.2聊天室界面 (7) 5.1.3单人聊天界面 (7) 5.2服务器端设计 (8) 六、系统测试 (8) 6.1登录测试 (8) 6.1.1用户名为英文字母 (8) 6.1.2用户名为中文 (9) 6.1.3用户名为标点符号 (9) 6.1.4多个用户有重名 (10) 6.1.5服务器地址不合法 (11) 6.1.6端口号不合法 (12) 6.1.7服务器未开启 (12) 6.2群发消息测试 (13) 6.3私聊测试 (15) 6.4用户列表显示测试 (16) 七、心得体会 (16) 八、参考资料 (16) 九、程序清单 (16)

设计题目:聊天室系统 一、设计目的及要求 1.1设计目的 通过该聊天室系统,掌握网络编程的概念及基于网络的C/S模式软件系统开发,掌握基于TCP 协议的Socket编程,掌握Java的多线程机制。 1.2设计要求: 实现多个用户之间类似于QQ的聊天程序,有聊天界面,多用户之间既可以实现群聊,也可以单独聊天。 二、技术背景 2.1网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。 2.2网络通信 (1)IP地址:网络中设备的标识,不易记忆,可用主机名 要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,在TCP/IP协议中,这个标识号就是IP地址。 (2)端口号:用于标识进程的逻辑地址 物理端口网卡口 逻辑端口我们指的就是逻辑端口 A:每个网络程序都会至少有一个逻辑端口 B:用于标识进程的逻辑地址,不同进程的标识 C:有效端口:0~65535,其中0~1024系统使用或保留端口。 (3)传输协议:通信的规则,常见的有UDP,TCP UDP:将数据源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快。 TCP:建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低。 2.3 Socket (1)Socket套接字 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。 (2)Socket原理机制 A:通信的两端都有Socket。 B:网络通信其实就是Socket间的通信。 C:数据在两个Socket间通过IO传输。

基于Linux网络聊天室的设计3

基于Linux网络聊天室的设计 摘要本课程设计实现了在linux下简单的网络聊天室。在Linux下编写并调试服务器端程序和客户端程序,实现了客户、服务器之间的连接和通信。可以在单机上开辟两个窗口分别运行客户、服务器端的程序,或者将两台主机连接分别作为客户和服务器的方式。本设计使用网络套接字socket和多线程在网络中的应用,并基于linux下的vi编辑器。本方案经gcc调试器调试成功,可以在单机网络聊天中使用。 关键词网络聊天室;linux ;socket ;vi Abstract Design and Implementation of the course in under linux simple network chat rooms. Prepared in the Linux and debugging server-side processes and client to achieve the client, server and communications link between. Can open up two windows on the stand-alone operation, respectively, customers, server-side procedures, or to connect two hosts, respectively, as the way the client and server. The design of the network socket using the socket and multi-threaded applications in the network, and under linux based vi editor. The program by the success of gcc debug debugger, you can chat in the use of stand-alone network. Key words Network Chat Rooms; Linux; Socket; Vi

聊天室设计报告

网 络 聊 天 系 统 设 计 报 告 组长:靳子豪 组员:凯强、许玉军、王明明 完成时间: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 进行可行性研究的方法 成本效益分析、对估算问题的看法、软件的作用围、软件的成本估算、速度安排

Java聊天室系统程序设计实验报告

Java聊天室系统程序设计 实验报告 题目:****** 院(系):****** 年级专业:****** 学生姓名:****** 指导老师:****** 开始时间:****** 完成时间:******

第一部分:课程设计总述 课程设计目的: 1.学会Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java 程序开发的全过程。 2.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、 Java多线程编程、Applet程序的设计、文件和网络输入输出流编程、Java 数据库编程等。 3.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。 课程设计总体要求: 1.问题的描述与程序将要实现的具体功能。 2.程序功能实现的具体设计思路或框架,并检查流程设计。 3.代码实现。 4.程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。 5.设计小结(包括) 课程设计题目: 目标 本软件是一个实用聊天程序。项目要实现以下目标: 1)允许用户注册; 2)允许注册用户登录聊天室; 3)登录用户之间进行聊天文件传输; 4)用户可以更改背景音乐; 用户信息的保存 本软件只是一个聊天室程序,所以用户只要打开程序就可以登录。本软件使用文本文件或者数据库来保存用户数据。 需求分析 对功能的规定

1.系统的用例图(对注册用户) 2.用户注册过程

3.用户登录过程 对性能的规定 由于本软件只是一个聊天室程序,程序只是提供用户之间的聊天和文件传输,故对网络传输数据要求不是很高,只要正常的传输速度就可以了。 需要管理的数据 用户的信息如下:用户名,密码,头像,电子邮件,地址。 4 开发环境 本软件采用Java语言编写,Java语言是一种跨平台的编程语言,所以本软件对操作系统没有特别的要求。而网络传输方面采用TCP/IP网络传输协议或者是RMI。

JAVA聊天室系统的设计与实现

目录 第1章绪论- 1 - 1.1论文背景及课题来源 (1) 1.2本课题在国内外的发展状况 (1) 1.3应解决的问题及系统开发意义 (1) 第2章开发工具及相关技术介绍........................................................................................................... - 2 - 2.1J A V A与S OCKET简介 .. (2) 2.2JB UILDER5介绍 (3) 2.3C/S模型介绍 (3) 2.4用J A V A实现S OCKET模型 (4) 2.5J A V A中的线程模型简介 (5) 2.6SQL SERVER2000简介 (5) 第3章系统需求分析............................................................................................................................... - 6 - 3.1系统任务描述. (6) 3.2系统功能分析 (6) 3.2.1 系统的功能需求....................................................................................................................... - 6 - 3.2.2系统数据流图............................................................................................................................ - 7 - 3.2.3系统数据分析............................................................................................................................ - 8 - 3.3系统可行性分析 (9) 第4章系统设计 .................................................................................................................................... - 11 - 4.1系统总体结构设计 (11) 4.2数据库设计 (12) 4.3系统功能模块详细设计 (13) 第5章编码与实现 ................................................................................................................................ - 16 - 5.1系统主要模块代码 (16) 5.1.1启动、停止服务器.................................................................................................................. - 16 - 5.1.2客户端连接服务器.................................................................................................................. - 17 -

在线聊天室需求分析

在线聊天室需求分析 需求分析是程序设计中最关键的一个步骤,是其他步骤的基础。其主要任务是“为了解决这个问题,目标系统必须做什么”。主要确定目标系统具有那些功能。在这个步骤里,程序员在用户那里搜集所有的对将要开发的系统的需求信息,并且把这些信息编写成为用户和程序员都可以认可的需求说明书。 1 可行性研究 1)技术可行性:因为该系统是要求是实现动态交互式的页面设计及对数据库的 查询、插入、删除等操作,而本系统采用ASP技术设计网页 及使用ACCESS数据库来存储数据,所以技术上是可行的。 2) 经济可行性:开发本系统为用户和管理员带来了极大的方便,而且所用的 人力、物力、技术、资金等的花费不大,所以今后获得的经济 效益一定会大于开发成本。 3) 操作可行性:由于本系统安装了ACCESS,IIS所以只要打开IE浏览器, 输入IP地址即可进入本系统,操作方便。 2 聊天室运行环境 ASP要浏览必须经过服务器解析才能够浏览得到。如果是将asp文件上传到支持asp的服务器,那就能够直接浏览。但是如果是在本机上,那就必须将电脑设置成为服务器。单机并不需要设置成为局域网,只需要设置成为单机服务器就可以。 ASP运行所需的环境如下: ·Microsoft Internet Information Server version 3.0/4.0 on Windows NT Server ·Microsoft Peer Web Services Version 3.0 on Windows NT Workstation ·Microsoft Personal Web Server on Windows 95/98/2000/XP 也就是说平常所使用的window95/98/2000/XP都可以运行asp,只需要将其设置为单机服务器就行了。归结一点:window95/98,需要安装PWS;window2000/XP,需要安装IIS。才能发挥其asp的作用。

聊天室设计报告

聊天室设计报告

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

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

完成时间: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 目标

基于linu网络聊天室的设计

计算机科学与技术 计 1341 课程设计任务书 题目基于linux 网络聊天室的设计 实验目的: 《Linux 操作系统课程设计B >〉是一门在课程《Linux 操作系统与程序设 计B 》后独立开设的实验课程。这一门实验课程的开设目的是为了通过学生独 立完成一个基于Linux 平台的较大型应用程序,巩固课堂上学到的 Linux 平 台上的编程规范、技术和技巧,培养学生的编写较大型程序的能力和提高学 生综合应用素质。 本课程设计实验主要围绕Linux 平台上主流的基础技术展开,这些技术 包括:Linux 的进程、线程通信和同步技术;socket 网络通信技术等,这些 技术可以集中体现并应用在并发程序设计中。通过并发程序的设计与开发, 培养学生底层软件开发的能力,并为将来从事 UNIX/Linux 平台开发、嵌入式 开发等相对高端的软件开发工作打下基础。 课程设计的具体内容与要求: 1. 阅读(一个)示例代码,理解并发程序设计并掌握基于 Linux 平台并 发程序设计的方法。 《Linux 操作系统》课程设计报告 院 工商学院 学生姓名: 王慢,韩霞,孙洁茹,李强,蒋涛

5 8 2.在充分理解示例程序的基础上,重新定义和完善程序的功能,定义数 据结构,划分程序的功能模块和接口,明确每个模块功能以及相互关系。 3.完成程序的详细设计和编码,并测试。 4.书写并提交文档 目录 10 19-24

基于linux 网络聊天室的设计 摘要本课程设计主要实现一个Linux 下的局域网聊天工具的设计。该设计主要分为两部分,客户端部分和主机部分。运行服务器端程序可以和任意运行了客户端程序的主机 进行通信,通信内容能够通过终端显示出来。两个部分都使用C语言,利用vi编辑器, 通过Berkeley 套接口编程实现相关功能。 课程设计背景 Linux是一种针对PC计算机和工作站的操作系统,它具有像Windows和Mac那样的功能 齐全的图形用户界面( GUI,Graphical User Interface) 。Linus Torvald 和其它的遍布世界各地的编程人员共同开发的[1]。 提到Linux我们不能不提GNI和Unix。Richard建立的自由软件联盟出版了两种许可证,GNU通用公共许可证(GNU Gneral Public License,GPL) 和GNU?数库通用公共许可证 (GNU Library Gneral Public License,LGPL) 。大部分GNUT程的软件和文档是以GNU! 用公共许可证发行的,但是有一些库是以GNU函数库通用公共许可证发行的。按照GNU S 用公共许可证的规定,Linux 的源代码可以自由获取,这满足了我们学习该系统的强烈愿 望。GPL充分体现了Stallman的思想:只要用户所做的修改是同等自由的,用户可以自由 地使用、拷贝、查询、重用、修改甚至发布这个软件。通过这种方式,GPL保证了Linux (以及同一许可证下的大量其他软件)不仅现在自由可用,而且皮后经过任何修改这后都仍然 可以自由使用。 Unix 是由AT—T贝尔实验室的Ken Thompson和Dennis Ritchie 于1969年在一台已 经废弃了的PDP-7上开发的;最初它是一个用汇编语言写成的单用户操作系统。后来,他 们又在PDP-11上用C语言重新编写(发明C语言的部分目的就在于此),把Unix做成为了一个文本处理系统, 这使Unix 在贝尔实验室得到广泛的应用。Unix 的最初版本免费提供给许多知名的大学的计算机系使用。加州大学伯克利分校的计算机系就是其中的一名,并 地Unix进行了修改增加了许多新的特点,这就是主为人知的BSC版本的Unix。与此同时, 其它独立开发的Unix 版本也开始萌生。Unix 不断发展了, 各种版本被应用到不同的计算机使用。而Linux 最初是专门为基于Intel 的个人计算机设计的。 (1)Linux 的昨天 1991 年, 一名叫Linus Torvalds 的芬兰大学生对Unix 各种版本对于80386 类的机器的

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

网络聊天室系统设计与 实现 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

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

目录

一、引言 随着网络的大幅度普及,以及网络技术快速发展,人们通过网络进行交流的方式发生着巨大的变化,人们不再拘泥于移动电话的通话模式,越来越多的人通过网络聊天工具进行交流,网络聊天室便是非常典型的聊天工具之一。聊天室系统的即时交流方式满足了网络中人们同时与多人进行聊天交流的需要,使得较多的人在同一个聊天页面进行交流变得方便,简单。 本设计所完成的网络聊天室具有常用聊天室的所有功能,包括使用账号登录聊天室、注册账号、显示在线用户列表、显示系统消息、两人之间进行私密聊天、消息提醒、发送表情、修改发送文字颜色;同时,为了管理聊天室中的用户使用语言的文明,赋予管理员踢出使用不文明语言的用户功能,显示全部聊天信息。 该系统采用B/S(浏览器/服务器)结构进行开发,参考网络中正在使用的大型聊天室的架构、分析聊天室可实现功能,结合本次设计的相关要求,进行开发设计并写出需求分析说明书。 该系统具体开发环境:使用专业版作为服务器运行平台,服务器开发语言使用Java语言,前台使用Jsp技术、JavaScript、Jquery语言,系统框架使用 Struts2+Hibernate+Spring框架,后台数据库使用MySql数据库。 二、需求分析 该系统采用B/S模式设计,开发目的主要是提供一个基于网络的安全文明的供多人聊天社交平台。 系统运行环境需求

聊天室程序

目录 1 引言 (1) 1.1项目背景 (1) 1.2国内外研究现状 (2) 1.3主要思路 (2) 2 需求分析 (4) 2.1设计目标 (4) 2.2开发环境 (4) 2.3功能要求 (4) 2.4实现效果 (5) 2.5网络聊天室系统E-R图 (6) 3 系统概要设计 (7) 3.1需求规定 (7) 3.2系统层次结构 (7) 3.3系统数据结构设计 (8) 3.4系统流程图 (9) 4 详细设计及编码方式 (11) 4.1登录功能模块设计 (11) 4.2注册功能模块设计 (13) 4.3房间选择功能模块设计 (14) 4.4聊天室主界面设计 (16) 4.4.1聊天室整体框架设计 (16) 4.4.2导航区设计 (18) 4.4.3显示在线区用户设计 (19) 4.4.4显示聊天信息区设计 (20) 4.4.5发送信息区设计 (21) 4.5修改密码功能模块设计 (23) 4.6选择头像功能模块设计 (25)

4.7用户管理功能模块设计 (26) 5 系统测试 (29) 5.1系统测试目标 (29) 5.2系统测试内容 (29) 5.3系统测试结论 (30) 6 结论 (31) 参考文献 (32) 致谢 (33)

1引言 1.1项目背景 21世纪的一些重要特征就是数字化、网络化和信息化,它是一个以网络为核心的信息时代。要实现这些就要依靠完善的网络,因此网络现在已经成为信息社会的命脉和发展知识经济的重要基础。网络对社会生活的方方面面已经产生了不可估量的影响[1]。 截止2010年6月底,我国网民规模达4.2亿,互联网普及率持续上升增至31.8%,这其中手机网民增长明显,半年内新增4334万,达到2.77亿人[2]。我国网民的互联网应用表现出商务化程度迅速提高、娱乐化倾向继续保持、沟通和信息工具价值加深的特点。社交网站、即时通信使用率增长较快,半年用户增长19.6%和11.7%[3]。 由于交通的发达,现代人会经常地流动,因此面对面的亲身交流往往不可企及。而网络恰好就为这些希望能够经常交流的人们提供了加强联系、增进交流的平台。社交网络源自网络社交,网络社交的起点是电子邮件。早期的电子邮件解决了远程邮件传输的问题,至今它也是互联网上最普及的应用,而后BBS把网络社交推进了一步。即时通信的出现更像是前面两个社交工具的升级版本,提高了即时效果和同时交流能力[4]。社科院2005年调查关注了人们使用这些网络交流工具的情况,调查表明,人们最常用的网络交流工具为电子邮件,其次是ICQ和聊天[5]。 聊天室作为因特网应用工具之一,在社会上起着越来越重要的作用。70年代末,有一种冒险游戏,在这个游戏中,就有一些对话,它帮助了互联网中聊天室的诞生。也就是IRC。IRC是芬兰人Jarkko Oikarnen于1988年首创的一种在网络中进行聊天的协议。直到今天,大部分聊天室都会以IRC为基础。网络聊天室刚开始的时候是以文本聊天为主,后来出现了语音聊天,到了今天,视频、语音、文字都很好的融入到了聊天工具当中。网络聊天之所以不同于现实聊天,是因为网络聊天是在虚拟的环境中完成的,从某种意义上讲,网络聊天是现实聊天的延伸。虚拟的网络聊天客服了现实聊天中的空间限制,是的聊天的空间大大的扩展了。网络聊天因其技术的发展实现了空间的无限扩展,形成了只要有互联网,不同地方的人们就可以聊天的状况,使得现实生活的交往范围大大扩展了。随着互联网技术的不断发

聊天室程序设计报告

实验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()才返回,否则将阻塞。

基于某linux网络聊天室地设计

《Linux操作系统》课程设计报告 学院工商学院 专业计算机科学与技术 班级计1341 学生:王慢,霞,洁茹,强,涛

课程设计任务书 题目基于linux网络聊天室的设计 实验目的: 《Linux操作系统课程设计B》是一门在课程《Linux操作系统与程序设计B》后独立开设的实验课程。这一门实验课程的开设目的是为了通过学生独立完成一个基于Linux平台的较大型应用程序,巩固课堂上学到的Linux平台上的编程规、技术和技巧,培养学生的编写较大型程序的能力和提高学生综合应用素质。 本课程设计实验主要围绕Linux平台上主流的基础技术展开,这些技术包括:Linux的进程、线程通信和同步技术; socket网络通信技术等,这些技术可以集中体现并应用在并发程序设计中。通过并发程序的设计与开发,培养学生底层软件开发的能力,并为将来从事UNIX/Linux平台开发、嵌入式开发等相对高端的软件开发工作打下基础。 课程设计的具体容与要求: 1.阅读(一个)示例代码,理解并发程序设计并掌握基于Linux平台并 发程序设计的方法。 2.在充分理解示例程序的基础上,重新定义和完善程序的功能,定义数 据结构,划分程序的功能模块和接口,明确每个模块功能以及相互关 系。 3.完成程序的详细设计和编码,并测试。 4.书写并提交文档

目录 1引言 (1) 1.1课程设计背景 (1) 1.2课程设计目的 (2) 1.3课程设计容 (4) 2 技术介绍 (7) 2.1TCP和UDP介绍................................................................... 2.2客户/服务器模型................................................................. 2.3网络套接字(socket)的概念...................................................... 2.4多线程的概念.................................................................... 3 系统设计 (10) 3.1 系统结构设计................................................................... 3.2通信模块设计.................................................................... 4模块实现. (12) 4.1系统调用相关函数................................................................ 4.2 系统实现过程说明............................................................... 5 运行效果 (15) 结束语................................................................................. 参考文献.. (18) 附录.............................................................................. 19-24

聊天室的设计与实现

Java 聊天室的设计与实现 学院:计算机学院 专业: 班级: 学号: 姓名:秦向红 指导老师: 2014年11月

1. 设计背景 (1) 2. 设计环境 (1) 3. 设计目的 (1) 4. Socket介绍 (1) 5. Socket的通信机制图: (3) 6.程序的设计 (4) 6.1服务器的设计 (4) 6.2客户端的设计 (7) 7. 测试及运行结果 (10) 7.1服务器的测试 (10) 7.2客户端的测试 (10) 8.设计总结 (13) 9. 参考文献 (14) 10.附代码 (14) 10.1服务器代码 (14) 10.2客户端的设计 (17)

Java 聊天室的设计与实现 1.设计背景 在互联网如此发达的今天,即时通信工具已经成为我们如常生活中必不可少的一部分。人们对网络的依赖越来越多,越来越离不开网络,而由此产生的聊天工具也越来越多,类似有QQ、MSN、、微信等,网络聊天使网络聊天系统发展的日新月异,由此产生制作了一个简单的聊天功能的网络聊天程序,由此此设计我还可以更好的学习网络软件的编程知识。 Java语言是当今流行的网络编程语言,它具有面向对象,与平台无关,安全,多线程等特点。使用java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的的,嵌入式设备进行应用程序的开发。面向对象的开发是当今世界最流行的开发方法,它不仅具有更贴近自然地语义,而且有利于软件的维护和继承。 此次设计的题目为聊天室,可以巩固所学的java语言基础知识,增进java语言的编辑基本功,拓宽常用类库的应用,使我们通过教学环节与手段,把所学的课程及相关知识加以融会贯通,全面理解网络编程的含义。 2.设计环境 操作系统:Window 8 CPU:1.80GHz 内存:4.00GB 硬盘空间:80G 开发工具:JDK1.5、Eclipse 3.设计目的 聊天室虽然程序简单,但是在设计与实现的过程中能够充分学到基于Socket的网络编程的技术,使我掌握网络编程的服务的技术,能够充分利用我近期学到的java编程语言。实现聊天功能Client/Server的面向连接的编程技术。使用多线程进行多个客户端和服务器的连接,实现数据的读取与输入。 实现网络聊天系统的设计与实现,让我们掌握网络编程的服务的技术,让同学们更加深刻的了解,掌握这方面的知识 4.Socket介绍 Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet 上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。 Socket非常类似于电话插座。在这里,我以一个国家级电话网为例更加清楚的讲解一下Socket。电话的通话双方相当于相互通信的2个进程,区号是它的网络地址;区内一个

相关文档
相关文档 最新文档