




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
vc 网络编程(socket) 在网上找了很多的资料,现将这些资料整合起来,详细介绍一下 VC 下的 socket 编程,并提供一个服务器客户端具体的实例。希望对您有所帮助 一、原理部分 (个人觉得这篇写的可以,所以转与此,原文地址:/78/ 2683078.shtml) 在网络编程中最常用的方案便是 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 编程技术,我们这里探讨怎样使用底 层的 API 函数实现简单的 Winsock 网络应用程式设计,分别说明如何在 Server 端 和 Client 端操作 Socket,实现基于 TCP/IP 的数据传送,最后给出相关的源代码。 在 VC 中进行 WINSOCK 的 API 编程开发的时候,需要在项目中使用下面的三个 文件,否则会出现编译错误。 1WINSOCK.H: 这是 WINSOCK API 的头文件,需要包含在项目中。 2WSOCK32.LIB: WINSOCK API 连接库文件。在使用中,一定要把它作为 项目的非缺省的连接库包含到项目文件中去。 3WINSOCK.DLL: WINSOCK 的动态连接库,位于 WINDOWS 的安装目录 下。 服务器端操作 socket(套接字) 1在初始化阶段调用 WSAStartup() 此函数在应用程序中初始化 Windows Sockets DLL ,只有此函数调用成功后 ,应用程序才可以再调用其他 Windows Sockets DLL 中的 API 函数。在程式中调 用该函数的形式如下:WSAStartup(WORD)(1 #include #pragma comment(lib, “ws2_32.lib“) void main() WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, if ( err != 0 ) 第 9 页 共 11 页 return; if ( LOBYTE( wsaData.wVersion ) != 1 | HIBYTE( wsaData.wVersion ) != 1 ) WSACleanup( ); return; SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0); SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000); bind(sockSrv,(SOCKADDR*)/ 绑定端口 listen(sockSrv,5); SOCKADDR_IN addrClient;/ 连接上的客户端 ip 地址 int len=sizeof(SOCKADDR); while(1) SOCKET sockConn=accept(sockSrv,(SOCKADDR*)/ 接受 客户端连接,获取客户端的 ip 地址 char sendBuf50; sprintf(sendBuf,“Welcome %s to here!“,inet_ntoa(addrClient.sin_addr); / 组合消息发送出去 send(sockConn,sendBuf,strlen(sendBuf)+1,0);/ 发送消息到客户端 char recvBuf50; recv(sockConn,recvBuf,50,0);/ 接受客户端消息 printf(“%sn“,recvBuf); /closesocket(sockConn);/断开连接 客户端代码 #include #include #pragma comment(lib, “ws2_32.lib“) void main() WORD wVersionRequested; WSADATA wsaData;/WSAata 用来存储系统传回的关于 WinSocket 的资料。 int err; wVersionRequested = MAKEWORD( 1, 1 ); err = WSAStartup( wVersionRequested, if ( err != 0 ) return; 第 11 页 共 11 页 if ( LOBYTE( wsaData.wVersion ) != 1 |HIBYTE( wsaData.wVersion ) ! = 1 ) WSACleanup( ); return; SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);/ AF_INET tcp 连 接 /初始化连接与端口号 SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr(““);/本机地址,服务 器在本机开启 addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(6000);/ 设置端口号 connect(sockClient,(SOCKADDR*)/连接服务 器 char recvBuf50; recv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 11803-2025船用交流低压配电板
- 审计运营考试题库及答案
- 森林火知识培训课件
- 森林消防危险地形课件
- 梯形面积课件
- 2025年财务分析师招聘面试实战模拟题及案例解读
- 2025年残联就业指导员面试技巧及常见问题解答
- 2025年注册验船师考试(C级船舶检验法律法规)冲刺试题及答案二
- 2025年风电场安全管理高级运维工程师考试重点解析
- 桥梁施工员培训课件
- 2025年吉林省中考语文真题(含答案)
- 2025高级会计师考试试题及答案
- 工地建筑钢板租赁合同范本
- 光传输业务配置课件
- 2025年辽宁省地质勘探矿业集团有限责任公司校园招聘笔试备考题库带答案详解
- 2025年青海辅警招聘考试题及答案
- 2025新外研版初中英语八年级上全册课文原文翻译
- 钢结构安装安全操作规程
- 流程优化活动方案
- 消防装备认识课件
- 实验室病原微生物危害 评估报告
评论
0/150
提交评论