欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年C语言网络编程 .pdf

    • 资源ID:34883443       资源大小:781.09KB        全文页数:13页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年C语言网络编程 .pdf

    C语言的学习,一般的方式是,先学C,然后是 C+,最好还要有汇编语言和微机原理基础,然后才是Visual C+ 。这样的方式,对学习者来说,要花费很多时间和耐力。而在学校教学中,也没有时间深入学习Windows 编程的实用技术了。其实, 具有了 C语言基础后, 再有一些基本的C+类的概念, 就可以直接学习Windows C编程了。一、走近Windows C 语言很多语言都把显示一个“Hello,World!”做为第一个入门程序, C 语言的第一个程序是这样的:#include main() printf(“Hello,World!”); 如果把 main 函数写成带参数的main 函数,应该是:#include main(int arge,char *argv) printf(“Hello,World!”); Windows C 的第一个程序和这个程序在形式和原理上都是一致的,只是有两点不同: 1. 主函数接收的形参不只是命令行中的字符串的个数和字符串的首地址。 2. C语言的很多函数在Windows C中都可以继续使用,但象printf()屏幕显示等函数就不能继续使用了。因为 Windows是多任务操作系统,屏幕已不再为某一个应用程序所独有, Windows C应用程序要显示字符串,需要使用Windows 提供的 API 函数,开自己的窗口下面是一个最简单的,显示“Hello,World!”的Windows C 程序:#include APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) MessageBox(NULL,Hello,World!,第一个 Windows C程序,MB_OK|MB_ICONASTERISK); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 13 页 - - - - - - - - - 主函数的形参有四个: 1) Hinstance:接收程序运行时当前实例的句柄; 2) HprivInstance:前一个实例的句柄; 3) LpCmdLine :程序命令行指针; 4) NcmdShow :一个用来指定窗口显示方式的整数。这几个参数的使用我们会在深入的学习中介绍的。显示 Hello,Word!字符串,我们使用了一个MessageBox函数,这个函数会在屏幕上显示一个对话框,它的原型是:int MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UNIT uType) 四个参数分别是: 1) HWnd :父窗口的句柄; 2) LpText:要显示字符串的指针; 3) LpCaption:对话框标题字符串的指针; 4) UType :显示在对话框上的小图标的类型。使用这个函数要包含windows.h 头文件。调试一下,怎么样?窗口上弹出了一个“第一个Windows C 程序”对话框,上面有一行字:“ Hello,World!”。世界真的很美好啊!深入编程:在 C语言中,函数的声明,如果没有指明返回值类型,缺省值为void ,这个程序的主函数就没有返回值。不过,在 Windows 编程时,我们最好养成个好习惯,指明函数的返回值类型,因为在C+中,函数返回值类型是不可以缺省的。而我们在Windows C编程时,还是会用到 C+ 的一些概念,这样做,有利于以后深入地学习。规范一点的程序应该是这样的:#include 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 13 页 - - - - - - - - - int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) MessageBox(NULL,Hello,World!,第一个 Windows C程序,MB_OK|MB_ICONASTERISK); return 0; 这里,我们声明的类型为int型,并且返回一个值0,这样的函数就可以使用在复杂一点的函数调用中了。在这一节中,我们有几处都提到了句柄的概念,句柄和指针的概念不同,它是作为操作系统内部索引表中的一个值来使用的,这样可以防止应用程序直接访问名对象的内部结构,体现了Windows 资源管理的优越性。譬如说, 一个窗口找开之后,好对应内存中的一个内存块,这个窗口所在的内存快地址往往会由操作系统做动态的调整,但其却不会随之变化。不过,通过它可以访问这个窗口,所以在使用的时候,可以把它当做指针一样看待。二、获取本地计算机的主机名和IP 地址和 C语言一样,函数是Windows C 编程的最基本的单位。不过,Windows C 主要使用API 函数,而网络编程则主要使用Winsock 提供的 API 函数。 Winsock 是 90 年代初,为了方便网络编程,由Microsoft联合了其他几家公司共同制定的一套WINDOWS 下的网络编程接口, 它是通过C语言的动态链接库方式提供给用户及软件开发者的,主要由winsock.h头文件和动态链接库winsock.dll组成,目前有两个版本:Winsock1.1 和 Winsock2.0 。在 Win32 平台上,访问众多的基层网络协议,Winsock 是首选接口。用 Visual C+6.0编译 Windows C 程序,使用Winsock API函数时,首先要把wsock32.lib添加到它的库模块中,否刚在链接的时候,会出现“error LNK2001 ”错误。添加 wsock32.lib的具体步骤是:打开工程菜单,选择设置,在弹出的Project settings对话框中,点击link选项卡,然后在对象/ 库模块文本框中添加wsock32.lib。最简单的网络编程是获取本机的主机名和IP 地址,这个程序使用了WSAStart()、WSAClenaup()、gethostname ()、 gethostbyname ()四个 winsock API函数 , 这四个函数的功能和使用方法介绍如下: 1 WSAStartup(): 【函数原型】int PASCAL FAR WSAStartup(WORD wVersionRequired, LPWSADATA 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 13 页 - - - - - - - - - lpWSAData); 【使用说明】每一个使用winsock 的应用程序, 都必须进行WSAStart 函数调用, 并且只有在调用成功之后才能使用其它的winsock 网络操作函数。 WVersionRequired:表示欲使用的insock版本,这是一个WORD 类型的整数,它的高位字节定义的是次版本号,低位字节定义的是主版本号。 LpWSAData: 是一个指向WSADATA 资料的指针。这个资料我们一般不使用。返回值:调用成功返回0;否则,返回出错信息。 2 WSAClenaup(): 【函数原型】int PASCAL FAR WSACleanup(void); 【使用说明】 winsock使用后,要调用SACleanup 函数关闭网络设备,以便释放其占用的资源。 3 gethostname() 【函数原型】int PASCAL FAR gethostname (char FAR * name, int namelen); 【使用说明】该函数可以获取本地主机的主机名,其中: name: 用于指向所获取的主机名的缓冲区的指针。 Namelen:缓冲区的大小,以字节为单位。返回值:若无错误,返回0;否则,返回错误代吗。 4 gethostbyname() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 13 页 - - - - - - - - - 【函数原型】struct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name); 【使用说明】该函数可以从主机名数据库中得到对应的“主机”。该函数唯一的参数name就是前面调用函数gethostname()得到的主机名。若无错误,刚返回一个指向hostent结构的批针,它可以标识一个“主机”列表。 Hostent结构定义如下:Struct hostent char FAR * h_name; char FAR FAR * h_aliases; short h_addrtype; char FAR FAR * h_addr_list; 其中: h_name:主机名地址(PC )。 h_aliases:一个由主机备用名组成的空中止数组。 H_addrtype :返回地址的类型,对于Winsock, 这个域总是PF_INET。 H_lenth :每个地址的长度(字节数),对应于PF_INET域应该为4。 H_addr_list: 应该以空指针结尾的主机地址的列表,返回的地址是以网络顺序排列的。其中, h_addr_list0存放的就是本地主机的4 个字节的IP 地址,即: h_addr_list00.h_addr_list01.h_addr_list02.h_addr_list03 一个简单的用消息框显示主机名和IP 地址的源程序如下:#include int WSA_return; WSADATA WSAData; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 13 页 - - - - - - - - - HOSTENT *host_entry; char host_name256; char host_address256; int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) WSA_return=WSAStartup(0 x0101,&WSAData); if(WSA_return=0) gethostname(host_name,256); host_entry=gethostbyname(host_name); if(host_entry!=0) wsprintf(host_address,%d.%d.%d.%d, (host_entry-h_addr_list00&0 x00ff), (host_entry-h_addr_list01&0 x00ff), (host_entry-h_addr_list02&0 x00ff), (host_entry-h_addr_list03&0 x00ff); MessageBox(NULL,host_address,host_name,MB_OK); WSACleanup(); return 0; 深入编程:前面显示 IP 地址的时候, 我们使用的是消息框,规范一点的编程应该使用对话框,如何编辑一个对话框,很多书中都有介绍,编辑的对话框可参考图5 的运行界面。头文件 Get_IP.h如下:BOOL APIENTRY Hostname_ipDlgPro(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam); 这个程序只使用了一个对话框过程,一般把这个过程的声明放在头文件中。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 13 页 - - - - - - - - - 源程序 Get_IP.c :#include #includeGet_IP.h #includeresource.h /这个头文件在创建资源的时候会自动生成, / 并会在插入资源时自动生成控件标识号. int WSA_return; WSADATA WSAData; HOSTENT *host_entry; char host_name256; char host_address256; int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow) WSA_return=WSAStartup(0 x0101,&WSAData); if(WSA_return=0) gethostname(host_name,256); host_entry=gethostbyname(host_name); if(host_entry!=0) wsprintf(host_address,%d.%d.%d.%d, (host_entry-h_addr_list00&0 x00ff), (host_entry-h_addr_list01&0 x00ff), (host_entry-h_addr_list02&0 x00ff), (host_entry-h_addr_list03&0 x00ff); WSACleanup(); DialogBox(hInstance,DIALOG1,NULL,(DLGPROC)Hostname_ipDlgPro); return 0; BOOL APIENTRY Hostname_ipDlgPro(HWND hDlg,UINT message, WPARAM wParam,LPARAM lParam) switch(message) case WM_INITDIALOG: return(TRUE); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 13 页 - - - - - - - - - case WM_COMMAND: if(LOWORD(wParam)=IDOK) SetDlgItemText(hDlg,IDC_EDIT1,host_name); SetDlgItemText(hDlg,IDC_EDIT2,host_address); SetDlgItemText(hDlg,IDCANCEL,确定); if(LOWORD(wParam)=IDCANCEL) EndDialog(hDlg,TRUE); return(TRUE); break; return(FALSE); 三、利用VisualC+6.0编译 Windows C 程序利用 Visual C+6.0 编译 Windows C程序一般要经过以下四个步骤:新建项目、添加代码、添加资源和编译链接。下面我们简单地介绍一下程序上面介绍的规范的获取本机的主机名和 IP 地址程序的编译过程:( 一) 新建项目1启动 MicrosoftVisualC+,然后在【文件】菜单中先择【新建】命令,弹出如图1 所示的【新建】对话框:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 13 页 - - - - - - - - - 2在【新建】对话框中,系统打开的是默认的【工程】选项卡,【工程】选项卡左侧的列表框中有多种建立工程的方式,我们选中“Win32 Application”选项。3 在【位置】文本框中输入新建工程的路径(例如:),在【工程】文本框中输入工程名称(例如:Get_IP )。4 选中【平台】列表框中的Win32 复选框,然后单击【确定】按钮。5 在随后的对话框中,都选择默认设置,完成后,进入图2 示界面:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 13 页 - - - - - - - - - ( 二) 添加代码在 VisualC+6.0中,源代码一般存放在源代码文件和头文件中,往项目中添加源代码是非常方便的,为项目新建一个源代码文件一般要按下述方法操作:1 选择【工程】| 【添加工程】| 【新建】选项,弹出图3 所示【新建】对话框:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 13 页 - - - - - - - - - 2 在对话框的【文件】选项卡中,左侧的列表框选中“C+ Source File ”选项,右侧选中【添加工程】复选框,并在【文件】文本框中输入源文件名(例如:Get_IP.c )。3 单击【确定】按钮,【新建】对话框将被闭,用户就可以在新建的Get_IP.c中输入程序的源代码了。4 添加头文件Get_IP.h的方法和上面所述过程一样,只是在【文件】选项卡中,左侧的列表框要先中“ C/C+ Header File ”选项。在【文件】文本框中输入头文件名(例如:Get_IP.h )。( 三) 添加资源在添加资源前,必须在项目中先添加一个资源文件,然后可利用Visual C+6.0 提供的资源编辑器为项目新建一个资源,具体步骤如下:1 选择【工程】| 【添加工程】| 【新建】选项,弹出图3 所示【新建】对话框。2 在对话框的【文件】选项卡中,左侧的列表框选中“Rsource Script ”选项,右侧选中【添加工程】复选框,并在【文件】文本框中输入资源文件名(例如:Get_IP.rc)。3 单击确定, 回到主窗口后, 选择【插入】 |【资源】 选项, 打开【插入资源】 对话框,在名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 13 页 - - - - - - - - - 【资源类型】列表框中选中“Dialog ”选项,单击【新建】按钮,返回主窗口后,即可利用对话框编辑器进行编辑了。编辑后的对话框如图: 图 4: 图 5 ( 四) 编译链接在添加了源代码与资源文件后,就可以对程序编译连接了,可按Ctrl+F7键编译,按F7键连接,按Ctrl+F5键运行程序。在连接前是要注意,资源文件Get_IP.rc也要进行编译。由于这个程序引用了Winsock API 函数,在编译连接前,还要添加wsock32.dll,具体方法前面已经介绍过,这里就不再赘述了。一点看法:利用 C语言编写 Windows应用程序有两种方式: 一种是 Windows C编程方式,另一种是 Visual C+ 编程方式。在一般情况下,Visual C+ 编程方式编写的程序源代码量小、开发时的工作名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 13 页 - - - - - - - - - 量小、工作难度也较小,但编译后的代码量较大,运行速度略低;而Windows C编程方式编写的程序源代码量虽然较大,但可执行代码效率高。随着技术的进步,Visual C+编程方式已被广泛采用, 但象网络编程等一些对速度要求高、对硬件操作较多的程序,大多数还是用Windows C编程方式开发的。 另外,学习 Windows C程序设计,还有助于更深入地了解Windows的内幕和Windows API。从教学角度讲,在学生具备了C语言和其它一些前导课程基础后,直接进入Windows C网络编程等实用编程技术课程,不仅可以让学生尽早地接触到前沿的实用编程技术,而且还可以极大地调动学生的学习积极性,在有限的时间里,学到更多的知识和技术。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 13 页 - - - - - - - - -

    注意事项

    本文(2022年C语言网络编程 .pdf)为本站会员(Che****ry)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开