欢迎来到天天文库
浏览记录
ID:8806415
大小:76.50 KB
页数:19页
时间:2018-04-08
《socket编程指南及示例程序vc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、转自一位大虾的BLOG,代码的压缩包位置是http://www.blogjava.net/Files/wxb_nudt/socket_src.rar包括六个UDP和TCP发送接受的cpp文件,一个基于MFC的局域网聊天小工具工程,和此小工具的所有运行时库、资源和执行程序。1前言在一些常用的编程技术中,Socket网络编程可以说是最简单的一种。而且Socket编程需要的基础知识很少,适合初学者学习网络编程。目前支持网络传输的技术、语言和工具繁多,但是大部分都是基于Socket开发的,虽说这些“高级”的网络技术屏蔽了大部分底层实现,号称能极大程度的简化开发,而事实
2、上如果你没有一点Socket基础,要理解和应用这些技术还是很困难的,而且会让你成为“半瓢水”。深有感触的是当年我学习CORBA的时候,由于当时各方面的基础薄弱,整整啃了半年书,最终还是一头雾水。如果现在让我带一个人学CORBA,我一定会安排好顺序:首先弄清C++语法;然后是VC编译环境或者nmake的用法;接下来学习一些网络基础知识;然后是Socket编程;这些大概要花费3、4个月。有了这些基础学习CORBA一周即可弄懂,两个月就可以基于CORBA进行开发了。好了,说了半天其实中心思想就一个,Socket很简单,很好学!如果你会C++或者JAVA,又懂一点点网
3、络基础如TCP和UDP的机制,那么你看完本文就可以熟练进行Socket开发了。2 Socket简介(全文摘抄)(本节内容全部抄自网络,不保证正确性,有兴趣的可以看看!)80年代初,美国政府的高级研究工程机构(ARPA)给加利福尼亚大学Berkeley分校提供了资金,让他们在UNIX操作系统下实现TCP/IP协议。在这个项目中,研究人员为TCP/IP网络通信开发了一个API(应用程序接口)。这个API称为Socket接口(套接字)。今天,SOCKET接口是TCP/IP网络最为通用的API,也是在INTERNET上进行应用开发最为通用的API。90年
4、代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即WindowsSockets规范。它是BerkeleySockets的重要扩充,主要是增加了一些异步函数,并增加了符合Windows消息驱动特性的网络事件异步选择机制。WINDOWSSOCKETS规范是一套开放的、支持多种协议的Windows下的网络编程接口。从1991年的1.0版到1995年的2.0.8版,经过不断完善并在Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,已成为Windows网络编程的事实上的标准。目前,
5、在实际应用中的WINDOWSSOKCETS规范主要有1.1版和2.0版。两者的最重要区别是1.1版只支持TCP/IP协议,而2.0版可以支持多协议。2.0版有良好的向后兼容性,任何使用1.1版的源代码,二进制文件,应用程序都可以不加修改地在2.0规范下使用。SOCKET实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有SOCKET接口的计算机通信。应用程序在网络上传输,接收的信息都通过这个SOCKET接口来实现。在应用开发中就像使用文件句柄一样,可以对SOCKET句柄进行读,写操作。3 再说两句网上很多文章对于Socket的来龙去脉
6、有如教科书一般的精准。但是涉及具体编程技术就往往被VC等集成开发环境所毒害了,把WindowsSDK、MFC、Socket、多线程、DLL以及编译链接等等技术搅合在一起煮成一锅夹生饭。既然要学习Socket,就应该用最简单直白的方式把Socket的几个使用要点讲出来。我认为程序员最关心的有以下几点,按照优先级排列如下:1. Socket的机制是什么?2. 用C/C++写Socket需要什么头文件、库文件、DLL,它们可以由谁提供,安装后一般处于系统的哪个文件夹内?3. 编写Socket程序需要的编程基础是什么?4.
7、 Socket库内最重要的几个函数和数据类型是什么?5. 两个最简单的例子程序;6. 一个贴近应用的稍微复杂的Socket应用程序。我将一一讲述这些要点,并给出从简到繁,从朴素到花哨的所有源代码以及编译链接的命令。4 Socket的机制是什么?我们可以简单的把Socket理解为一个可以连通网络上不同计算机程序之间的管道,把一堆数据从管道的A端扔进去,则会从管道的B端(也许同时还可以从C、D、E、F……端冒出来)。管道的端口由两个因素来唯一确认,即机器的IP地址和程序所使用的端口号。IP地址的含义所有人都知道,
8、所谓端口号就是程序员指定的一个数字,许
此文档下载收益归作者所有