2024年3月22日发(作者:)

vc 网络编程(socket)

在网上找了很多的资料,现将这些资料整合起来,详细介绍一下VC下的socket

编程,并提供一个服务器客户端具体的实例。希望对您有所帮助

一、原理部分

(个人觉得这篇写的可以,所以转与此,原文地址:/78/2

)

在网络编程中最常用的方案便是Client/Server (客户机/服务器)模型。在这种方

案中客户应用程序向服务器程序请求服务。一个服务程序通常在一个众所周知的地址监

听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户向这个服务的

地址提出了连接请求。在这个时刻,服务程序被"惊醒"并且为客户提供服务-对客户的

请求作出适当的反应。

为了方便这种Client/Server模型的网络编程,90年代初,由Microsoft联合了

其他几家公司共同制定了一套WINDOWS下的网络编程接口,即Windows Socket

s规范,它不是一种网络协议,而是一套开放的、支持多种协议的Windows下的网络编

程接口。现在的Winsock已经基本上实现了与协议无关,你可以使用Winsock来调

用多种协议的功能,但较常使用的是TCP/IP协议。Socket实际在计算机中提供了一

个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。应用程序

在网络上传输,接收的信息都通过这个Socket接口来实现。

微软为 Visual C++定义了Winsock类如CAsyncSocket类和派生于CAsync

Socket 的CSocket类,它们简单易用,读者朋友当然可以使用这些类来实现自己的

网络程序,但是为了更好的了解Winsock API编程技术,我们这里探讨怎样使用底层

第 1 页 共 11 页

的API函数实现简单的 Winsock 网络应用程式设计,分别说明如何在Server端和C

lient端操作Socket,实现基于TCP/IP的数据传送,最后给出相关的源代码。

在VC中进行WINSOCK的API编程开发的时候,需要在项目中使用下面的三个

文件,否则会出现编译错误。

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

2.: WINSOCK API连接库文件。在使用中,一定要把它作为项

目的非缺省的连接库包含到项目文件中去。

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

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

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

此函数在应用程序中初始化Windows Sockets DLL ,只有此函数调用成功后,

应用程序才可以再调用其他Windows Sockets DLL中的API函数。在程式中调用该

函数的形式如下:WSAStartup((WORD)((1<<8|1),(LPWSADATA)&WSADa

第 2 页 共 11 页