<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
<!--
p.MsoNormal {
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
font-family:"Times New Roman";
}
-->
</style>
</head>
<body>
<p class="MsoNormal"><span style="font-family:宋体; font-size:14.0pt; ">二、</span><span style="font-family:宋体; font-size:12.0pt; ">数据结构设计</span><span style="font-family:宋体; font-size:12.0pt; ">.</span><span style="font-size:14.0pt; "> </span></p>
<p class="MsoNormal"><span style="font-family:宋体; ">整体方案的构思图如下:</span><br />
<img width="516" height="371" src="/image/clip_image002.jpg" /><br />
<span style="font-family:宋体; ">通过上图,我们可以看到整个系统分为三个相关的程序,即注册</span>/<span style="font-family:宋体; ">登陆服务器、通信服务器以及用户程序。其中,注册</span>/<span style="font-family:宋体; ">登陆服务器负责用户的注册、登陆以及数据库管理;通信服务器负责完成数据转发以及共享数据结构的管理;用户端则完成注册、登陆和通信功能。为什么要把服务器分为两部分呢?主要是考虑到服务器的用户容量问题,以及对通信服务器的保护,只有在通过验证后,用户在能与通信服务器连接。</span></p>
<p class="MsoNormal"><span style="font-family:宋体; ">由此可见,整个系统通信任务的实现还是很复杂的。用户端首先必须注册自己,等待注册成功;然后根据自己的注册信息进行服务器登陆,登陆成功后才能与通信服务器连接,进行用户间通信。</span></p>
<p class="MsoNormal"><span style="font-family:宋体; ">注册</span>/<span style="font-family:宋体; ">登陆服务器接收到用户端的信息后,首先判断是注册信息还是登陆信息。如果是注册信息,则将该数据按预定的格式写入数据库,然后返回注册成功的消息,期间有任何异常产生,服务器都会返回注册失败消息,提示用户重新注册;如果是登陆信息,则从数据中提取用户名和</span>ID<span style="font-family:宋体; ">与数据库中的内容进行比较,如果该用户存在,则返回登陆成功消息,反之,返回登陆失败消息。</span></p>
<p class="MsoNormal"><span style="font-family:宋体; ">通信服务器所完成的主要功能是数据转发,这是通过与图中的共享数据结构进行交互完成的。服务器接收到用户端发来的消息后,提取消息的一部分与共享数据结构存储的内容进行比较,确定所要转发的对象,最后通过多线程及其通信机制完成数据转发。</span> <span style="font-family:宋体; ">下面,我们将分三部分来讨论系统的具体实现过程。</span></p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"><span style="font-family:宋体; font-size:14.0pt; ">三、</span><span style="font-family:宋体; font-size:12.0pt; ">算法设计</span><span style="font-size:12.0pt; "> </span></p>
<p class="MsoNormal">3.1 <span style="font-family:宋体; ">注册</span>/<span style="font-family:宋体; ">登陆服务器</span></p>
<p class="MsoNormal"><span style="font-family:宋体; ">注册</span>/<span style="font-family:宋体; ">登陆服务器程序是基于对话框的,该程序使用</span>I/O<span style="font-family:宋体; ">端口</span>56789<span style="font-family:宋体; ">与用户端连接。</span><br />
<span style="font-family:宋体; ">首先,在对话框初始化的同时完成网络初始化,即执行</span>Init_net()<span style="font-family:宋体; ">函数,代码(不完整)如下:</span></p>
<p class="MsoNormal">BOOL CServerDlg::Init_net()</p>
<p class="MsoNormal">{////////////////////////<span style="font-family:宋体; ">网络初始化</span>///////////////////////////////</p>
<p class="MsoNormal"> addrLen=sizeof(SOCKADDR_IN);</p>
<p class="MsoNormal"> status=WSAStartup(MAKEWORD(1, 1), &Data);</p>
<p class="MsoNormal"> ………</p>
<p class="MsoNormal"> memset(&serverSockAddr, 0, sizeof(serverSockAddr));</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">/*<span style="font-family:宋体; ">以下指定一个与某个</span>SOCKET<span style="font-family:宋体; ">连接本地或远程地址</span>*/</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> serverSockAddr.sin_port=htons(PORT);</p>
<p class="MsoNormal"> serverSockAddr.sin_family=AF_INET;</p>
<p class="MsoNormal"> serverSockAddr.sin_addr.s_addr=htonl(INADDR_ANY);</p>
<p class="MsoNormal"> serverSocket=socket(AF_INET, SOCK_STREAM, 0);//<span style="font-family:宋体; ">初始化</span>SOCKET</p>
<p class="MsoNormal"> ………</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> status=bind(serverSocket,(LPSOCKADDR)&serverSockAddr,sizeof(serverSockAddr)); //<span style="font-family:宋体; ">将</span>SOCKET<span style="font-family:宋体; ">与地址绑定</span></p>
<p class="MsoNormal"> ………</p>
<p class="MsoNormal"> status=listen(serverSocket, 5); //<span style="font-family:宋体; ">开始监听</span></p>
<p class="MsoNormal"> ………</p>
<p class="MsoNormal"> return true;</p>
<p class="MsoNormal">}</p>
<p class="MsoNormal"><span style="font-family:宋体; ">接着按下</span>RUN<span style="font-family:宋体; ">键开始服务器功能,执行</span>Reg_Load()<span style="font-family:宋体; ">函数,使服务器始终处于等待连接状态,但这样也使该线程始终阻塞。当有用户连接时,该函数创建一个任务用于处理与用户及数据库的事务。具体任务函数略(详见原始代码文件)。</span> </p>
<p class="MsoNormal">void CServerDlg::Reg_Load()</p>
<p class="MsoNormal">{ </p>
<p class="MsoNormal"> while(1)</p>
<p class="MsoNormal"> {</p>
<p class="MsoNormal"> CWinThread* hHandle;</p>
<p class="MsoNormal"> clientSocket=accept(serverSocket,(LPSOCKADDR)&clientSockAddr,&addrLen); //<span style="font-family:宋体; ">等待连接,阻塞</span></p>
<p class="MsoNormal"> hHandle=AfxBeginThread(talkToClient,(LPVOID)clientSocket);//<span style="font-family:宋体; ">有连接时,创建任务</span></p>
<p class="MsoNormal"> ………</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal">}</p>
<p class="MsoNormal"><span style="font-family:宋体; ">任务函数在接收到消息时,要对数据库进行操作,由于数据库较简单,采用</span>ODBC<span style="font-family:宋体; ">连接</span>ACCESS<span style="font-family:宋体; ">数据库(将</span>netuser.mdb<span style="font-family:宋体; ">在</span>ODBC<span style="font-family:宋体; ">数据管理器中安装成同名数据源)具体代码略。</span> </p>
<p class="MsoNormal">3.2 <span style="font-family:宋体; ">通信服务器</span></p>
<p class="MsoNormal"><span style="font-family:宋体; ">通信服务器是本程序实现的关键,它运用共享数据结构技术及多线程技术,通过</span>I/O<span style="font-family:宋体; ">端口</span>56790<span style="font-family:宋体; ">与用户端连接,实现了数据转发功能。首先,程序初始化网络</span>Init_net()<span style="font-family:宋�
没有合适的资源?快使用搜索试试~ 我知道了~
DreamWeaver+8中文版网页设计与网站建设实用教程
共304个文件
gif:113个
jpg:52个
png:30个
3星 · 超过75%的资源 需积分: 3 6 下载量 154 浏览量
2008-11-10
23:30:19
上传
评论
收藏 4.84MB ZIP 举报
温馨提示
DreamWeaver+8中文版网页设计与网站建设实用教程
资源推荐
资源详情
资源评论
收起资源包目录
DreamWeaver+8中文版网页设计与网站建设实用教程 (304个子文件)
addinfo.asp 20KB
default.asp 16KB
allinfo.asp 16KB
m_info.asp 16KB
default.asp 11KB
add.asp 9KB
classlist.asp 8KB
m_reply.asp 8KB
edit_info.asp 8KB
m_edit.asp 7KB
edit_class.asp 6KB
view.asp 4KB
login.asp 3KB
login.asp 3KB
ubb.asp 3KB
MMHTTPDB.asp 3KB
MMHTTPDB.asp 3KB
left.asp 2KB
del_info.asp 2KB
m_del.asp 2KB
del_class.asp 2KB
admin.asp 1KB
loginfail.asp 1KB
fail.asp 1KB
uploadfinish.asp 1KB
right.asp 688B
conn.asp 253B
conn.asp 188B
Thumbs.db 69KB
Thumbs.db 68KB
Thumbs.db 57KB
Thumbs.db 50KB
Thumbs.db 48KB
Thumbs.db 40KB
Thumbs.db 36KB
Thumbs.db 31KB
Thumbs.db 17KB
Thumbs.db 14KB
Thumbs.db 13KB
Thumbs.db 11KB
Thumbs.db 9KB
Thumbs.db 9KB
Thumbs.db 7KB
1111.gif 337KB
xmas_cj011.gif 168KB
xmas_cj011.gif 168KB
0025.gif 102KB
rlogo.gif 74KB
index_top1.gif 14KB
fail.gif 13KB
fail.gif 13KB
01.gif 9KB
index_07.gif 8KB
kabg.gif 5KB
kabg.gif 5KB
kabg.gif 5KB
index_lmtop.gif 5KB
pic.gif 3KB
20054616104170383.gif 3KB
2005431324010055.gif 3KB
2005431332486265.gif 3KB
20054119481077038.gif 3KB
20054823114977499.gif 3KB
20054823324343994.gif 3KB
top-title.gif 3KB
200543128129181.gif 2KB
shou.gif 2KB
qi.gif 2KB
home.gif 2KB
liu.gif 2KB
index_top2.gif 2KB
left01.GIF 1KB
replypost.gif 1KB
pic229234.gif 1KB
space.gif 1KB
space.gif 1KB
search2.gif 1KB
search2.gif 1KB
index_lmbottom.gif 1KB
Edit.gif 1KB
Edit.gif 1KB
addpost.gif 1KB
qq.gif 928B
qq.gif 928B
a_delete.gif 881B
a_delete.gif 881B
welcome.gif 796B
mail.gif 722B
mail.gif 722B
20.gif 653B
08.gif 626B
06.gif 597B
01.gif 539B
14.gif 536B
19.gif 526B
09.gif 524B
17.gif 518B
11.gif 509B
03.gif 508B
02.gif 504B
共 304 条
- 1
- 2
- 3
- 4
资源评论
- jo56902011-12-20仅仅几个范例,没啥文字解说,看着不知所云。。。
cbj6655
- 粉丝: 64
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 4399GameSem_116_13955_207551_6.apk
- python 3.9.19源码编译包
- php-8.2.18-Win32-vs16-x64.rar
- 字节跳动青训营-抖音项目
- SQL资料手册,语句教程,高级查询语句语法
- 上位机和串口建立 Modbus 协议进行数据传输,并使用 Mysql 数据库存储,能够实现实时温湿度显示和动态变化曲线,历史数据
- Attachment 1_chazhi.xlsx
- 安卓项目,实现虚拟摇杆通过wifi串口发送nema-0183协议实现小吊舱方向控制
- 基于modbus协议的大屏数据监控,使用modbus slave模拟数据,串口服务器获取温湿度
- 下载资源.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功