基于局域网聊天程序设计
摘 要:
本论文讨论了Windows环境下局域网聊天程序的设计思路和设计方法。
其中网络通信部分采用流行的TCP/IP协议。
程序采用典型的C/S(服务器/客户端)构架。
用socket编程设计网络通讯。
界面设计部分采用Windows MFC框架。
数据库采用微软SQL Server。
本文最终设计了一个简易版本的聊天软件,
包括登陆、退出、添加好友、消息收/发等功能。
关键词:
Sockets API,C/S构架,
SQL Server。
Realization of a kind of LAN chat tool
Abstract: This article discusses how to design and develop a LAN chatting program in Windows environment. The network communication part depends on the popular TCP/IP protocol. Software is based on C/S architecture. Network communication is developed with Socket. UI is designed with Windows MFC frame. Database is designed with SQL server. The article describes a concise chart software version, with the function of logging in/out, adding friend to list, sending/receiving message and so on.
Key words: Sockets API,
C/S architectureSQL Server
论文目录
局域网聊天程序的设计2
第一章、概述4
第二章、WINDOWS SOCKETS 网络编程的研究4
2.1 TCP/IP体系结构5
2.2.1 TCP/IP简介5
2.2.2 TCP/IP的特点5
2.2基本套接字5
2.3客户机/服务器模式7
2.4 WINDOWS SOCKETS程序设计8
2.4.1 WINDOWS SOCKETS API简介8
2.4.2 WINDOWS SOCKETS机制9
第三章、网络通信模块分析11
3.1 网络通信程序设计过程11
3.2 网络通信程序设计核心13
3.2.1通信设计代码分析13
3.2.2数据传输代码分析17
3.2.3出错处理19
第四章、界面模块分析20
4.1 服务器端界面模块分析20
4.2 客户端界面模块分析21
4.2.1用户登陆界面分析21
4.2.2用户注册界面分析22
4.2.3在线用户列表界面分析23
4.2.4用户聊天界面分析24
第五章、数据库模块分析27
5.1数据库的选择27
5.2数据库访问方法27
5.3 ADO数据库编程27
5.3.1 ADO与 ADO接口简介27
5.3.2使用ADO操作SQL代码分析28
第六章、总结33
6.1体会和感想33
6.2 总结33
第七章、参考书目34
第一章 概述
即时通讯软件的出现正在逐渐改变人们的沟通与交际方式。
无论近在咫尺,还是远隔重洋,也只是在键盘和鼠标之间就可以解决问题。
即时通讯服务非常适合企业内部或企业和客户之间的交流。
而且将即时通讯服务和手机移动等服务结合,
将更大地提高工作效率。
网络聊天程序.越来越影响着我们的网络生活。
习惯了通过类似ICQ、QQ、MSN之类的程序和天南海北的朋友聊天、发信息,
不过所有聊天程序都需要Internet的支持而无法在局域网内部"大显身手"
那么你是否想到过要让单位内部的员工寝室周围的同学
不用上Internet就可以轻松体验到内网聊天的快乐呢?有了这种想法
开发局域网聊天程序就有了必要性让单位员工或寝室同学不出内网就能自由聊天!
本文主要研究的是一个具有高度实用性的聊天程序软件的设计原理
思路和过程。
通过该网络程序的编制和实践,对自己所学习的知识进行一次综合和提高,
有更深层次的理解和掌握在这过程中激发自己学习的潜力
提高软件开发的能力加深对网络协议和windows环境下网络编程的理解和掌握。
第二章、Windows Socket 网络编程的研究
2.1 TCP/IP体系结构
2.2.1 TCP/IP简介
TCP/IP 作为 Internet的核心协议,
通过近二十多年的发展已日渐成熟并被广泛应用于局域网和广域网中
目前已成为事实上的国际标准。
TCP/IP 协议集确立了 Internet 的技术基础。
TCP/IP 协议主要作用于 OSI 网络参考模型中的网络层(第3层)、传输层(第4层)和应用层(第7层)。
数据链路层(第2层)的功能主要应用于其它协议如以太网(Ethernet)、ATM、帧中继(Frame Relay),
以及多数供应商特定协议等。
TCP/IP 充分支持所有通用第2层协议。
TCP/IP 组中的应用程序通常直接运行于传输层协议 TCP 或 UDP 上面,
并不需要表示层(第6层)和会话层(第5层)的支持。
2.2.2 TCP/IP的特点
TCP/IP协议的核心部分是传输层协议(TCP、UDP),
网络层协议(IP)和物理接口层这三层通常是在操作系统内核中设计。
因此用户一般不涉及。
编程时,
编程界面有两种形式:
一、是由内核心直接提供的系统调用;二、使用以库函数方式提供的各种函数。
前者为核内设计,后者为核外设计。
用户服务要通过核外的应用程序才能设计,
所以要使用套接字(socket)来设计。
2.2基本套接字
下面给出几个基本的套接字,
这些套接字的使用贯穿了网络编程的始末主导了数据通信的过程。
这将在以后的篇幅中会给出更详细的使用说明。
1、创建套接字--socket()
功能:
使用前创建一个新的套接字
格式:
SOCKET PASCAL FAR socket(int af,int type,int procotol);
参数:
af: 通信发生的区域
type: 要建立的套接字类型
procotol: 使用的特定协议
2、指定本地地址--bind()
功能:
将套接字地址与所创建的套接字号联系起来。
格式:
int PASCAL FAR bind(SOCKET s,const struct sockaddr FAR * name,int namelen);
参数:
s: 是由socket()调用返回的并且未作连接的套接字描述符(套接字号)。
其它:
没有错误,bind()返回0,
否则SOCKET_ERROR
地址结构说明:
struct sockaddr_in
{
short sin_family;//AF_INET
u_short sin_port;//16位端口号
网络字节顺序
struct in_addr sin_addr;//32位IP地址
网络字节顺序
char sin_zero[8];//保留
}
3、建立套接字连接--connect()和accept()
功能:
共同完成连接工作
格式:
int PASCAL FAR connect(SOCKET s,const struct sockaddr FAR * name,int namelen);
SOCKET PASCAL FAR accept(SOCKET s,struct sockaddr FAR * name,int FAR * addrlen);
参数:
同上
4、监听连接--listen()
功能:
用于面向连接服务器
表明它愿意接收连接。
格式:
int PASCAL FAR listen(SOCKET s, int backlog);
5、数据传输--send()与recv()
功能:
数据的发送与接收
格式:
int PASCAL FAR send(SOCKET s,const char FAR * buf,int len,int flags);
int PASCAL FAR recv(SOCKET s,const char FAR * buf,int len,int flags);
参数:
buf:指向存有传输数据的缓冲区的指针。
6、多路复用--select()
功能:
用来检测一个或多个套接字状态。
格式:
int PASCAL FAR select(int nfds,fd_set FAR * readfds,fd_set FAR * writefds,
fd_set FAR * exceptfds,const struct timeval FAR * timeout);
参数:
readfds:指向要做读检测的指针
writefds:指向要做写检测的指针
exceptfds:指向要检测是否出错的指针
timeout:最大等待时间
7、关闭套接字--closesocket()
功能:
关闭套接字s
格式:
BOOL PASCAL FAR closesocket(SOCKET s)。
2.3客户机/服务器模式
在TCP/IP网络中两个进程间的相互作用的主机模式是客户机/服务器模式(Client/Server model)。
该模式的建立基于以下两点:
1、非对等作用;2、通信完全是异步的。
客户机/服务器模式在操作过程中采取的是主动请示方式:
首先服务器方要先启动,
并根据请示提供相应服务
过程如下所示:
1、打开一通信通道并告知本地主机
它愿意在某一个公认地址上接收客户请求。
2、等待客户请求到达该端口。
3、接收到重复服务请求,处理该请求并发送应答信号。
4、返回第二步,等待另一客户请求
5、关闭服务器。
客户方:
1、打开一通信通道,并连接到服务器所在主机的特定端口。
2、向服
上一篇:
基于VC聊天室的论文
下一篇:
近三年来思想工作小结(德能勤绩廉)