📄 3.2.3 服务应用程序.htm
字号:
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 图3-8 </B></FONT>在TimeClient范例应用程序之起始对话方块</FONT></TD><BR>
</TR><BR> </TBODY></TABLE><BR></CENTER><BR>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>为了察看客户端与服务器端之通讯,您必须在对话方块上方之编辑控制项中键入服务器的名称。如果您在同一个机器上执行客户端与服务器之处理程序,请键入如图3-8所示之句号并以其为伺服名称。当您按下Request
Server’s
Time之按钮时,客户端应用程序会呼叫CreateFile,以决定要连接哪一个服务器与客户端,并使服务器醒来并且处理客户端的要求。如果伺服端并没有执行,则CreateFile会执行失败并显示一个如图3-9所示之讯息方块。</FONT></P><BR>
<P><BR style="LINE-HEIGHT: 25px"> </P><BR>
<CENTER style="LINE-HEIGHT: 25px"><BR>
<P><BR> <INPUT id=9 style="LINE-HEIGHT: 25px" type=image
height=118 width=500 src="3.2.3 服务应用程序.files/3-9.gif" border=0
onclick="imgclick"></P></CENTER><BR>
<CENTER style="LINE-HEIGHT: 25px"><BR>
<TABLE style="LINE-HEIGHT: 25px" border=0><BR>
<TBODY style="LINE-HEIGHT: 25px"><BR>
<TR style="LINE-HEIGHT: 25px"><BR>
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 图3-9 </B></FONT>当TimeService没有执行时,经由TimeClient所显示之讯息方块</FONT></TD><BR>
</TR><BR> </TBODY></TABLE><BR></CENTER><BR>
<P><FONT style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2>如果服务已经执行,CreateFile会回传一个有效的handle;而客户端会等待时间资料经由一个非同步呼叫ReadFile之管道传送回来。在客户端取得资料后,客户端的管道handle会被关闭,由服务器传送过来的时间会被转换成客户端的本地时间,并且会更新初始对话方块的内容,其结果如图3-10所示。</FONT></P><BR>
<P><BR style="LINE-HEIGHT: 25px"> </P><BR>
<CENTER style="LINE-HEIGHT: 25px"><BR>
<P><BR> <INPUT id=10 style="LINE-HEIGHT: 25px" type=image
height=176 width=310 src="3.2.3 服务应用程序.files/3-10.gif" border=0
onclick="imgclick"></P></CENTER><BR>
<CENTER style="LINE-HEIGHT: 25px"><BR>
<TABLE style="LINE-HEIGHT: 25px" border=0><BR>
<TBODY style="LINE-HEIGHT: 25px"><BR>
<TR style="LINE-HEIGHT: 25px"><BR>
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 图3-10 </B></FONT>TimeClient范例应用程序中被更新的对块方块内容</FONT></TD><BR>
</TR><BR> </TBODY></TABLE><BR></CENTER><BR>
<DIV style="LINE-HEIGHT: 25px; BACKGROUND-COLOR: #d7d7d7"><FONT
style="LINE-HEIGHT: 25px" face=Arial size=3><PRE style="LINE-HEIGHT: 25px">TimeClient.cpp <BR><BR>/************************************, ******************************** <BR><BR>模组:TimeClient.cpp <BR><BR>通告:Copyright (c)2000 Jeffrey Richter <BR><BR>********************************************************************/ <BR><BR>#include "..\CmnHdr.h" // 请参阅附录A <BR><BR>#include <WINDOWSX.H> <BR><BR>#include "..\ClassLib\EnsureCleanup.h" // 请参阅附录B <BR><BR>#include "Resource.h" <BR><BR>////////////////////////////////////////////////////////////////////////////// <BR><BR>BOOL Dlg_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { <BR><BR> chSETDLGICONS(hwnd, IDI_TIMECLIENT); <BR><BR> // 假设服务与客户端程序在同一台机器上执行 <BR><BR> SetDlgItemText(hwnd, IDC_SERVER, TEXT(".")); <BR><BR> return(TRUE); <BR><BR>} <BR><BR>////////////////////////////////////////////////////////////////////////////// <BR><BR>void Dlg_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify) { <BR><BR> switch (id) { <BR><BR> case IDCANCEL: <BR><BR> EndDialog(hwnd, id); <BR><BR> break; <BR><BR> case IDOK: <BR><BR> // 建构管道的平台 <BR><BR> TCHAR sz[500]; <BR><BR> sz[0] = sz[1] = TEXT(’\\’); <BR><BR> GetDlgItemText(hwnd, IDC_SERVER, &sz[2], chDIMOF(sz) - 2); <BR><BR> lstrcat(sz, TEXT("\\pipe\\TimeService")); <BR><BR> // 尝试与管道连结 <BR><BR> // 取得一个handle以与管道沟通 <BR><BR> CEnsureCloseFile hpipe = <BR><BR> CreateFile(sz, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); <BR><BR> if (hpipe.IsValid()) { <BR><BR> // 有效的handle,从管道中读取时间 <BR><BR> SYSTEMTIME st; <BR><BR> DWORD cbRead = 0; <BR><BR> ReadFile(hpipe, &st, sizeof(st), &cbRead, NULL); <BR><BR> // 转换UTC时间至客户端机器的本地时间并显示它 <BR><BR> SystemTimeToTzSpecificLocalTime(NULL, &st, &st); <BR><BR> GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL, sz, <BR><BR> chDIMOF(sz)); <BR><BR> SetDlgItemText(hwnd, IDC_DATE, sz); <BR><BR> GetTimeFormat(LOCALE_USER_DEFAULT, LOCALE_NOUSEROVERRIDE, &st, NULL, <BR><BR> sz, chDIMOF(sz)); <BR><BR> SetDlgItemText(hwnd, IDC_TIME, sz); <BR><BR> } else { <BR><BR> // 无效的handle,回执一个错误 <BR><BR> SetDlgItemText(hwnd, IDC_DATE, TEXT("Error")); <BR><BR> SetDlgItemText(hwnd, IDC_TIME, TEXT("Error")); <BR><BR> // 取得错误的文字说明 <BR><BR> HLOCAL hlocal = NULL; // 取得错误讯息字串之缓冲器 <BR><BR> FormatMessageA( <BR><BR> FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, <BR><BR> NULL, GetLastError(), <BR><BR> MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), (PSTR) &hlocal, 0, NULL); <BR><BR> if (hlocal != NULL) { <BR><BR> chMB((PCSTR)LocalLock(hlocal)); <BR><BR> LocalFree(hlocal); <BR><BR> } <BR><BR> } <BR><BR> break; <BR><BR> } <BR><BR>} <BR><BR>////////////////////////////////////////////////////////////////////////////// <BR><BR>INT_PTR WINAPI Dlg_Proc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { <BR><BR> switch (uMsg) { <BR><BR> chHANDLE_DLGMSG(hwnd, WM_INITDIALOG, Dlg_OnInitDialog); <BR><BR> chHANDLE_DLGMSG(hwnd, WM_COMMAND, Dlg_OnCommand); <BR><BR> } <BR><BR> return(FALSE); <BR><BR>} <BR><BR>////////////////////////////////////////////////////////////////////////////// <BR><BR>int WINAPI _tWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) { <BR><BR> DialogBox(hinstExe, MAKEINTRESOURCE(IDD_TIMECLIENT), NULL, Dlg_Proc); <BR><BR> return(0); <BR><BR>} <BR><BR>//////////////////////////////// End of File /////////////////////////////////</PRE></FONT></DIV><BR>
<CENTER style="LINE-HEIGHT: 25px"><BR>
<TABLE style="LINE-HEIGHT: 25px" border=0><BR>
<TBODY style="LINE-HEIGHT: 25px"><BR>
<TR style="LINE-HEIGHT: 25px"><BR>
<TD style="LINE-HEIGHT: 25px" align=middle><FONT
style="LINE-HEIGHT: 25px" face=arial color=#000000
size=2><FONT style="LINE-HEIGHT: 25px" face=arial
color=#3e80d7 size=2><B
style="LINE-HEIGHT: 25px"> 列表3-2 </B></FONT>TimeClient范例应用程序
<BR>
<DIV
style="LINE-HEIGHT: 25px"> </DIV></FONT></TD><BR>
</TR><BR> </TBODY></TABLE><BR></CENTER></A></DIV< p>
<P class=content_page><A
href="http://www.acejoy.com/Html/Article/network/5120061009102624_P2.html">上一页</A> <A
href="http://www.acejoy.com/Html/Article/network/5120061009102624.html">[1]</A> <A
href="http://www.acejoy.com/Html/Article/network/5120061009102624_P2.html">[2]</A> <STRONG><FONT
color=#ff0033>[3]</FONT></STRONG> </P></DIV><BR><BR></TD></TR></TBODY></TABLE>
<TABLE style="CLEAR: both" cellSpacing=0 cellPadding=0 width="97%">
<TBODY>
<TR>
<TD align=right>
<TABLE>
<TBODY>
<TR>
<TD>阅读:<SPAN id=news_hits></SPAN>
<SCRIPT src="3.2.3 服务应用程序.files/GetHits.htm"
type=text/JavaScript></SCRIPT>
次<BR>录入:<A
href="http://www.acejoy.com/User/Info.Asp?UserName=winston">winston</A><BR><BR></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD align=right>【 <A
href="http://www.acejoy.com/Comment.asp?ChannelID=1&Action=Write&InfoID=51">评论</A>
】 【 <A
href="http://www.acejoy.com/User/SendMail.asp?Title=Windows2000 服务器端应用程序开发设计指南- 服务应用程序(2)"
target=_blank>推荐</A> 】 【 <A href="javascript:window.print()">打印</A>
】 </TD></TR></TBODY></TABLE>
<TABLE style="CLEAR: both" width="97%" align=center>
<TBODY>
<TR>
<TD>上一篇:<A
title="标题:Windows2000 服务器端应用程序开发设计指南- 服务应用程序(1) 作者:Jeffrey Richter Jason D. Clark 更新:2006-10-9 10:16:14 点击:845"
href="http://www.acejoy.com/Html/Article/network/5020061009101614.html">Windows2000
服务器端应用程序开发设计指南- 服务应用程序(1)</A><BR>下一篇:<A
title="标题:Windows2000 服务器端应用程序开发设计指南-服务控制程序 作者:Jeffrey Richter Jason D. Clark 更新:2006-10-10 22:10:27 点击:754"
href="http://www.acejoy.com/Html/Article/network/5220061010221027.html">Windows2000
服务器端应用程序开发设计指南-服务控制程序</A> </TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE></DIV></DIV>
<DIV class=mframe>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm><SPAN class=tt>相关新闻</SPAN> </TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm>
<TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<SCRIPT language=javascript
src="3.2.3 服务应用程序.files/GetCorrelative.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=tl></TD>
<TD class=tm><SPAN class=tt>本文评论</SPAN> </TD>
<TD class=tr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm>
<P> </P>
<TABLE height="100%" cellSpacing=5 cellPadding=0 width="100%" border=0>
<TBODY>
<TR>
<TD vAlign=top>
<SCRIPT language=javascript
src="3.2.3 服务应用程序.files/Comment.htm"></SCRIPT>
</TD></TR></TBODY></TABLE></TD>
<TD class=mr></TD></TR></TBODY></TABLE>
<TABLE cellSpacing=0 cellPadding=0 width="100%" align=center>
<TBODY>
<TR>
<TD class=ml></TD>
<TD class=mm></TD>
<TD class=mr></TD></TR></TBODY></TABLE></DIV>
<TABLE id=footer cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR style="LINE-HEIGHT: 130%" align=middle>
<TD height=23> <A
href='javascript:window.external.addFavorite("http://www.acejoy.com","ACE开发者")'><FONT
color=#000000>加入收藏</FONT></A> - <A
href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT
color=#000000>关于本站</FONT></A> - <A class=Bottom
href="http://www.acejoy.com/Help.asp?Action=Copyright" target=_blank><FONT
color=#000000>版权申明</FONT></A> - <A class=Bottom
href="http://www.acejoy.com/Help.asp?Action=aboutweb" target=_blank><FONT
color=#000000>联系站长</FONT></A> - <A class=Bottom
href="http://www.acejoy.com/LinkSite.asp" target=_blank><FONT
color=#000000>友情链接</FONT></A> </TD></TR>
<TR align=middle>
<TD height=23>Copyright© 2004-2006 <A
href="http://www.acejoy.com/">http://www.acejoy.com/</A> .All Rights
Reserved <A href="http://www.miibeian.gov.cn/" target=_blank>京ICP备06055248
</A>
<SCRIPT language=JavaScript src="3.2.3 服务应用程序.files/stat.htm"
charset=gb2312></SCRIPT>
</TD></TR></TBODY></TABLE>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV>
<DIV></DIV><!--Powered by:CreateLive CMS Version 3.1(www.acejoy.com) CreateDate:2007-3-4 10:50:42--></DIV></DIV></DIV></DIV></DIV></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -