- 1、本文档共636页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3_4035857_C网络编程加扫雷程序
第1章 客户机/服务器开发
本章主要向读者介绍使用Winsock 开发典型客户机/服务器程序的方法。本章精选了5 个
实例程序从易到难,包括TCP客户机/服务器程序、多线程TCP服务器、通过Internet传输文
件,以及时间协议的具体应用。
1.1 Winsock 编程入门——简单的TCP 服务器
本节通过一个简单的TCP 服务器实例来讲述基本的Winsock 编程。实例程序在配套光盘
的SimpleTcpServerSrc工程下。
1.1.1 Winsock编程简介
Winsock 是Windows 下网络编程的标准接口,它允许两个或多个应用程序在同一台电脑
上,或者是通过网络相互交流。Winsock是真正的协议无关的接口,本节详细介绍Winsock编
程的方法。
如果仅有一台电脑,也仍然能够进行Winsock 编程。可以使用本地回环地址。
这样的话,如果有一个TCP 服务器运行在你的电脑上,那么运行在此电脑上的客户程序使用
这个回环地址,即可连接到服务器。
1.1.2 简单的TCP服务器
下面一步步创建简单的TCP 服务器。在此之前,还要做下面这些准备工作,以便可以真
正的进行Winsock编程。
??使用VC++ 6.0 App Wizard创建一个Win32控制台应用程序。
??记住要设置选项,以便添加对MFC的支持。
??打开文件stdafx.h,添加语句:#include winsock2.h。
??在winsock2.h之后,还要包含conio.h和iostream.h。
??打开菜单Project\Settings,切换到Link选项卡,向库模块列表中添加ws2_32.lib。或
者,直接在代码中添加语句:#pragma comment(lib, WS2_32),以便链接到
WS2_32.DLL库。因为所有的Winsock函数都是从WS2_32.DLL导出的。
1. main 函数
在main 函数中启动一个线程,然后循环调用_getch()。_getch()仅简单地等待键盘输入,
返回被按键的ASCII值。ESCAPE 键的ASCII值是27,所以函数返回27 后,程序才退出循环。
当main函数返回,进程将终止,进程内的线程也将会终止。上述过程的具体程序代码如下。
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
Visual C++网络程序设计实例详解
·2·
{
int nRetCode = 0;
cout Press ESCAPE to terminate program\r\n;
AfxBeginThread(ServerThread,0);
while(_getch()!=27);
return nRetCode;
}
2. ServerThread函数
下面要做的是列出ServerThread函数的实现代码,使用注释来解释每行代码的作用。TCP
服务器启动之后在端口20248监听。当有客户连接时,服务器向客户发回一个消息,告诉客户
自己的IP 地址,然后关闭连接,并继续到端口20248 去接受连接。上述过程的具体程序代码
如下。
UINT ServerThread(LPVOID pParam)
{
cout Starting up TCP server\r\n;
// SOCKET实际上是一个unsigned int类型
SOCKET server;
// WSADATA结构将有WSAStartup函数来填充
WSADATA wsaData;
// 对TCP/IP 套接字来说,sockaddr_in结构指定了套接字的地址
// 其他协议使用相似的结构
sockaddr_in local;
// WSAStartup函数负责加载Winsock库的函数
// 第一个参数用来指定想要加载的Winsock库的版本
int wsaret=WSAStartup(0x101,wsaData);
// 调用成功,WSAStartup函数返回0
// 失败的话,程序就退出
if(wsaret!=0)
{
return 0;
}
// 现在我们填充sockaddr_in结构
local.sin_family=AF_INET; // 地址家族Address family
local.sin_addr.s_addr=INADDR_ANY; // 要求使用当前主机配置的所有IP地址
local.sin_port=htons((u_short)20248); // 使用的端口
// socket函数用来创建我们的SOCKET
server=socket(AF_INET,SOCK_STREAM,0);
// 如果socket()函数调用失败,我们退出
第1章 客户机/
您可能关注的文档
- 2797.B杭城高端餐饮发展现状浅析 毕业论文其它附件.doc
- 27陶罐和铁罐 课件ppt.ppt
- 2848.C城市公交查询系统毕业设计 外文翻译.doc
- 27合理授权.ppt
- 2859.A加强珠海市中小型企业员工绩效管理之研究 本科毕业设计.doc
- 2878.B 家电销售部门的管理沟通 外文参考文献译文及原文doc.doc
- 2882.B XXX公司人才流失问题研究 外文参考文献译文及原文doc.doc
- 2860.B家族企业人力资源管理的分析与对策 外文参考文献译文及原文doc.doc
- 2883.B XXX家私有限公司激励机制研究 外文参考文献译文及原文doc.doc
- 2886.B XXX塑料交易所薪酬管理现状分析与改进对策 外文参考文献译文及原文doc.doc
文档评论(0)