基于Winsock API的VC网络编程实战

随着计算机信息技术的飞速发展,互联网与人类社会的工作、生活越来越紧密相关,它已 经成为人类获取、交流信息的重要途径和手段。所以当前对于开发人员来说,网络编程已是 必备的技能。本实例详细介绍了如何利用Winsock API编写网络应用程序。

一、实现 方法

在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种 方案中客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监听 对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的地址提 出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的 请求作出适当的反应。

为了方便这种Client/Server模型的网络编程,90年代初,由 Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编程 接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的 功能,但较常使用的是TCP/IP协议。Socket实际在计算机中提供了一个通信端口,可以通过 这个端口与任何一个具有Socket接口的计算机通信。应用程序在网络上传输,接收的信息都 通过这个Socket接口来实现。

微软为Visual C++定义了Winsock类如CAsyncSocket类 和派生于CAsyncSocket 的CSocket类,它们简单易用,读者朋友当然可以使用这些类来实现 自己的网络程序,但是为了更好的了解Winsock API编程技术,我们这里探讨怎样使用底层的 API函数实现简单的 Winsock 网络应用程式设计,分别说明如何在Server端和Client端操作 Socket,实现基于TCP/IP的数据传送,最后给出相关的源代码。

在VC中进行WINSOCK 的API编程开发的时候,需要在项目中使用下面的三个文件,否则会出现编译错误。

1 .WINSOCK.H: 这是WINSOCK API的头文件,需要包含在项目中。

2.WSOCK32.LIB: WINSOCK API连接库文件。在使用中,一定要把它作为项目的非缺省的连接库包含到项目文件 中去。

3.WINSOCK.DLL: WINSOCK的动态连接库,位于WINDOWS的安装目录下。

服务器端操作 socket(套接字)

1.在初始化阶段调用WSAStartup()

此函数在应用程序中初始化Windows Sockets DLL ,只有此函数调用成功后,应用程序才可 以再调用其他Windows Sockets DLL中的API函数。在程式中调用该函数的形式如下: WSAStartup((WORD)((1<<8|1),(LPWSADATA)&WSAData),其中(1<<8|1) 表示我们用的是WinSocket1.1版本,WSAata用来存储系统传回的关于WinSocket的资料。

2、建立Socket

初始化WinSock的动态连接库后,需要在服务器端建立一个监 听的Socket,为此可以调用Socket()函数用来建立这个监听的Socket,并定义此Socket所使 用的通信协议。此函数调用成功返回Socket对象,失败则返回INVALID_SOCKET(调用 WSAGetLastError()可得知原因,所有WinSocket 的API函数都可以使用这个函数来获取失败 的原因)。

SOCKET PASCAL FAR socket( int af, int type, int protocol )

参数: af:目前只提供 PF_INET(AF_INET);

type:Socket 的类型 (SOCK_STREAM、 SOCK_DGRAM);

protocol:通讯协定(如果使用者不指定则设为0);

如果要建 立的是遵从TCP/IP协议的socket,第二个参数type应为SOCK_STREAM,如为UDP(数据报)的 socket,应为SOCK_DGRAM。

时间: 2024-08-22 14:39:11

基于Winsock API的VC网络编程实战的相关文章

VC++网络编程WSAStartup和WSACleanup函数

一.WSAStartup函数 int WSAStartup ( WORD wVersionRequested, LPWSADATA lpWSAData ); 使用Socket的程序在使用Socket之前必须调用WSAStartup函数.该函数的第一个参数指明程序请求使用的Socket版本,其中高位字节指明副版本.低位字节指明主版本:操作系统利用第二个参数返回请求的Socket的版本信息.当一个应用程序调用WSAStartup函数时,操作系统根据请求的Socket版本来搜索相应的Socket库,然

基于TCP/IP协议的C++网络编程(API函数版)

源代码:http://download.csdn.net/detail/nuptboyzhb/4169959 基于TCP/IP协议的网络编程 定义变量--获得WINSOCK版本--加载WINSOCK库--初始化--创建套接字 --设置套接字选项--关闭套接字--卸载WINSOCK库--释放所有资源 整个程序架构分为两大部分,服务器端客户端. 服务器SOCKET程序流程: socket()→bind()→listen→accept()→recv()/send()→closesocket() 客户端

Java基于Socket实现网络编程实例详解_java

一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机. 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的. 目前较为流行的网络编程模型是客户机/服务器(C/S)结构.即通信双方一方作为服务器等待客户提出请求并予以响应.客户则

006_《深入Delphi6 网络编程》

<深入Delphi6 网络编程> Delphi 教程 系列书籍 (006) <深入Delphi6 网络编程> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 附书源码 作者: 静海 丛书名: Delphi编程热点技术系列丛书 出版社:中国铁道出版社 ISBN:7113043402 上架时间:2001-10-29 出版日期:2001 年10月 页码:344 版次:1-1 内容简介 本书系统地介绍了编程工具Delphi及其网络组件.Delphi中线程的

MFC 网络编程 -- 总结 .

基于 TCP 的 socket 编程 /*服务器端程序流程:1.加载套接字库       WSAStartup2.创建套接字           socket3.将我们创建的套接字,绑定到本机地址的某一端口上     bind4.为套接字设置监听模式,准备客户请求                          listen5.等待客户请求到来.当请求到来,将接受连接请求,并返回一个新的对应于此次连接的套接字     accept6.用新返回的套接字和客户端进行通信              

android网络编程:URL获取数据和图片

首先,开始最简单的网络编程实战,URL实现网络连接,不懂的童鞋可以参考JAVA中的URL编程,其原理是 一样的,在这里不再多做解释. 直接贴出实现源代码: public class DataActivity extends Activity { private EditText imagePathText; private static final String TAG="DataActivity"; private ImageView imageView; @Override pub

基于.NET平台网络编程入门实战系列 一 序

大学期间,我们学院开了一门叫做C语言的课程,当时的计算机环境的windowXP,外网不让上,只能上校园网,硬盘三无状态,无电影,无音乐,无游戏 ----除了扫雷.正所谓实势造英雄,当时的C语言课造就了一大批扫雷高手,APM (每分钟操作的次数,打过war3的都知道)惊人.牛人多了,自然要争个高下,所以扫雷PK的也是时有发生,但是PK规则都是牛人轮流扫,看谁用的时间少.当时就琢磨着为那批牛人打造一个网络版扫雷,一争高下,哎····大学生就是喜欢想,不愿意做!现在一步一步重构一个基于Socket的网

基于Visual C++的Winsock API研究

为了方便网络编程,90年代初,由Microsoft联合了其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Sockets规范,它不是一种网络协议,而是一套开放的.支持多种协议的Windows下的网络编程接口.现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调用多种协议的功能,但较常使用的是TCP/IP协议.Socket实际在计算机中提供了一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信.应用程序在网络上传输,接收的信息都

windows系统中基于WIFI的网络编程

问题描述 windows系统中基于WIFI的网络编程 想用C++写一个在windows系统中基于WIFI传输数据的网络小程序,请各位高手指点一下,应该从哪方面入手,开发流程是什么样的? 解决方案 什么也不用操心,wifi对于你的程序来说,是透明的,换一句话说,无线有线你的代码无需变化.在windows下,可以使用winsock编程实现通讯,如果是vc++,用mfc,可以用csocket类,具体google下,有现成的代码例子. 解决方案二: 就是winsock2而已不管网络是什么,用这个就对了,