首页 Windows C语言网络编程快速入门

Windows C语言网络编程快速入门

举报
开通vip

Windows C语言网络编程快速入门 Windows C语言网络编程快速入门 C语言的学习,一般的方式是:先学C,然后是C++, 最好还要有汇编语言和微机原理基础,然后才是Visual C++。这样的方式,对学习者来说,要花费很多时间和 精力。而在学校教学中,也就没有时间深入学习Win— dows编程的实用技术了。 其实,具有了C语言基础后,再有一些基本的C++ 类的概念,就可以直接学习Windows C编程了。 i . 走近Windows C语言 很多语言都把显示一个 “Hello,World Ill做为第一 ...

Windows C语言网络编程快速入门
Windows C语言网络编程快速入门 C语言的学习,一般的方式是:先学C,然后是C++, 最好还要有汇编语言和微机原理基础,然后才是Visual C++。这样的方式,对学习者来说,要花费很多时间和 精力。而在学校教学中,也就没有时间深入学习Win— dows编程的实用技术了。 其实,具有了C语言基础后,再有一些基本的C++ 类的概念,就可以直接学习Windows C编程了。 i . 走近Windows C语言 很多语言都把显示一个 “Hello,World Ill做为第一 个人门程序, C语言的第一个程序是这样的: 烈 m:lude 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 一点的程序应该是这样的: nC1ud nd0 . 1 nt APIENTRY w1 nMai nCHINSTANCE hInstance。HINSTANCE ~ tance, LPSTR lp~dcine,int nc掘lSI’c_ { 。 MessageBoxCNULL,~'Hello,愀 ndI”,"f--~ rindows c程序”。 喝 II卫附Isf日tzSI《): r~turn 0: } 这里,我们声明的类型为mt型,并且返回一个值0, 这样的函数就可以使用在复杂一点的函数调用中了。 口在这一小节中,我们有几处都提到了句柄的概 念,句柄和指针的概念不同,它是作为操作系统内部索 引 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 中的一个值来使用的,这样可以防止应用程序直接 访问对象的内部结构,体现了Windows资源管理的优 越性。譬如说,一个窗口打开之后,对应着内存中的一 个内存块,这个窗口所在的内存块地址往往会由操作系 统做动态的调整,但其句柄却不会随之变化。通过句柄 就可以访问这个窗口,所以在使用的时候,可以把它当 做指针一样看待。 二, 获取本地计算机的主机名和lP地址 和C语言一样,函数是Windows C编程的最基本 的单位。不过,Windows C主要使用API函数,而网络 编程则主要使用Winsock提供的API函数。 W in sock是 90年代初,为了方便网络编程由 Microsoft联合了其他几家公司共同制定的一套WIN— DOWS下的网络编程接口,它是通过C语言的动态链接 库方式提供给用户及软件开发者的,主要由winsock.h 头文件和动态链接库 winsock.dll组成,目前有两个版 本:Winsock1.1和 Winsock2.0。 在W in 3 2平台上,访问众多的基层网络 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 , Winsock是首选接口。 用Visual C++6.0编译Windows C程序,使用 Winsock API函数时,首先要把wsock32.1ib添加到 它的库模块中,否则在链接的时候会出现 “e r r o r 投稿信箱:tougao@csdn.net LNK2001”错误。 添加wsock32.1ib的具体步骤是:打开 “工程”菜 单,选择 “设置”,在弹出的 “Project settings”对话框 中,点击 “link”选项卡,然后在对象/库模块文本框 中添加 “wsock32.1ib”。 最简单的网络编程是获取本机的主机名和IP地址, 这个程序使用了WSAStart()、WSAClenaup()、 gethostname()、gethostbyname()四个Winsock API 函数,这四个函数的功能和使用 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 介绍如下 : 1.WSAStartup(): 【函数原型】 int PASCAL FAR WSAStartup(W ORD wVersionRequired,LPWSADATA lpWSAData); 【使用说明】 每一个使用win sock的应用程序,都必须进行 WSAStart函数调用,并且只有在调用成功之后才能使用 其它的Winsock网络操作函数。 wVersionRequired:<输入参数>表示欲使用的w insock版本,这是一个wORD类型的整数,它的高位 字节定义的是次版本号,低位字节定义的是主版本号。 LpWSAData:<输出参数>是一个指向WSADATA 资料的指针。这个资料我们一般不使用。 返回值:调用成功返回0;否则,返回出错信息。 2.WSAClenaup(): 【函数原型】 mt PASCAL FAR WSA Cleanup(void); 【使用说明】 wmsock使用后,要调用W SACleanup函数关闭网 络设备,以便释放其占用的资源。 3.gethosmame() 【函数原型】 int PASCAL FAR gethostname fchar FAR + name,int namelen); 【使用说明】 该函数可以获取本地主机的主机名,其中: name:<输出参数>用于指向所获取的主机名的缓 冲区的指针。 Namelen:<输入参数>缓冲区的大小,以字节为 www.csdII.net/magazine 45 维普资讯 http://www.cqvip.com 单位。 返回值:若无错误,返回0;否则,返回错误代码。 4.gethostbyname() 【函数原型】 struct h0stent FAR } PASCAL FAR gethostbyname(const char FAR }name); 【使用说明】 该函数可以从主机名数据库中得到对应的 “主机”。 该函数唯一的参数 n a m e就是前面调用函数 aethostnameO得到的主机名。若无错误,刚返回一个指 向hostent结构的批针,它可以标识一个 “主机”列表。 Hostent结构定义如下: St~ ct hOstent f ohar FAR h_name; FAR FAR★ tL五1 ases: short h add— ,e: d ’ FAR FAR口 h addr-1ist; ) 其 中 : h — name:<输入参数>主机名地址 (PC)。 h— aliases:一个由主机备用名组成的空终止数组。 h_addrtype:返回地址的类型,对于wmsock,这个 域总是PF_INET。 h— lenth:每个地址的长度 (字节数),对应于 PF INET域应该为4。 h_addr_ Est:应该以空指针结尾的主机地址的列表, 返回的地址是以网络顺序排列的。 其中,h_addr_list[O]存放的就是本地主机的4个字 节的IP地址,即:h—addr_list[O][O].h—addr_list[O][1]. h_addr_Est[0][2].h_addr~ist[0][3] 一 个简单的用消息框显示主机名和IP地址的源程序 如下 : 硝 c1ude· nsOck. int WSA_return; Ⅵ 0 .A W 0ata: HOSTENT host entry; char host~ [2S6]; char host_add~ss[256]: {nt APIENTRY wi a1 n(HINSTANCE hInstance。H]ENSTANCE 46 倒 一再重■-.撕‘一 hPrevlnstance, f , if(wSA_return==0) t host ent ,2S6); f01o6t咖 !=国 f 时 O’。sc address,’ .’,d削 ., ’, O擞 舯臼 耐 Hst嘲 阻瑚Dff), t舯 曲 耐 1话t嘲 I柚x0Dff)。 O擞 舯臼 耐 】话t嘲 暖I触目∞ff)。 O擞 舯臼 st嘲 疆I固c嘲DF ); MeSsaQem~(NULL。hos tess,host_minetMB_OK); ) ) WSACIeanupO; return 0; 深入编程 口前面显示IP地址的时候,我们使用的是消息框,规 范一点的编程应该使用对话框,如何编辑一个对话框,很 多 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 中都有介绍,编辑的对话框可参考图5的运行界面。 头文件Get—IP.h如下: B0OL A Ehm HOStname_ipDlgPro(~ hDlg,UlNT message。 WPARAM wParam。LPARAM 1Par狮): 这个程序只使用了一个对话框过程,一般把这个过 程的声明放在头文件中。 口源程序Get—IP.c: 别nclude~ nsocI‘2. nclude"Get_IP.h” 私 ∞ur e.hl’ ,,趔 ,头文件在创建资蔫 ||袭铰链箍) {“嘲 肿 扪_I: 自姓 成, HOSTENT ‘host entry; charhostj t~e[2s6]; char host_address[2S6】: 1 nt APIENTRY wi nMai n(HINSTANCE hznstance。HINSTANCE 蜩琏志n 。 I p 陬1 1hd f艳,int n(两蠡I f 计 ^肿 lm=o) 毛 维普资讯 http://www.cqvip.com gethostname(host_name。2S6): if(host_entry!=O) f 惜prfntfo岱t r毯s,’ 删 削附 ’。 慨 t舯b 硼 】话t隧 l茜c-∞ 。 赋蟹r瞳, 础II:3设 嘲踟m∞Ff)。 瓯舯 h.碰 : St嘲阅 mFf), 呔蜘 出 :.】{豉咖。8阳d】0f ); ) ) ~ACleanupO; O盲a1OgBOx(hInstance,”DIALOG.1”,NULL。(DLGPROC) H口酮黼 jpD1gPro): ) retl,lr'rl O: BOOt.APIENTRY Hostname_ipolgPrO(H~ND holg。UINT message。 嘲 R州 wParal~,LPARMt 1Param) 毛 s~tch(message) f caseI~_INITDIALOG: 嘞 盯IcTl1日; case WM_C0MMAND: if(LOWORD(wParam)==IDOK) 毛 蚓 驴强孵瞅 t D1g,ii)c._B)m ,hos%.sk~e); Setol gTtemText I[hol g,IDC—EDIT2, host_address); SetD1gItemText(holg,IDO~NCEL,”确定”); } if(LOWORD(WParam)==IDCANCEL) Bcbialogl 啁g, ; 三.利用VisualC++6.0绾译Windows C程序 利用Visual C++6.0编译Windows C程序一般要 经过以下四个步骤:新建项目、添加代码、添加资源和 编译链接。下面我们简单地说明上面所介绍的获取本机 的主机名和IP地址程序的编译过程: 一 新建项目 1.启动Microsoft Visual C++,然后在 【文件】菜 单中先择 【新建】命令,弹出如图1所示的 【新建】对 话框: 投稿信箱:tougao@csdn.net ● 图 1 2.在 【新建】对话框中,系统打开的是默认的 【工 程】选项卡,【工程】选项卡左侧的列表框中有多种建立 工程的方式,我们选中 “Win32 Application”选项。 3.在【位置】文本框中输入新建工程的路径 (例如: F:\),在 【工程】文本框中输入工程名称 (例如: Get — IP)。 4. 选中 【平台】列表框中的Win32复选框,然 后单击 【确定】按钮 。 5. 在随后的对话框中,都选择默认设置,完成 后,进入图2所示界面: 图 2 二 添加代码 在Visual C++6.0中,源代码一般存放在源代码文 件和头文件中,往项目中添加源代码是非常方便的,为 项目新建一个源代码文件一般要按下述方法操作: 1.选择 【工程】l【添加工程】l【新建】选项,弹 出图3(见下页)所示 【新建】对话框。 2.在对话框的 【文件】选项卡中,左侧的列表框选中 “C++SOljr。e Fne”选项,右侧选中 【添加工程】复选框, 并在 【文件】文本框中输入源文件名 (例如:Get一 .C)。 一 一’一 维普资讯 http://www.cqvip.com 维普资讯 http://www.cqvip.com
本文档为【Windows C语言网络编程快速入门】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_328641
暂无简介~
格式:pdf
大小:249KB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2014-01-22
浏览量:234