网上第一本以TXT格式的VC++深入详解孙鑫的书.全文全以TXT格式,并每一章节都分了目录,清晰易读

源代码在线查看: 14.5.2 客户端程序.txt

软件大小: 956 K
上传用户: kzdai22
关键词: TXT VC 目录
下载地址: 免注册下载 普通下载 VIP

相关代码

				14.5.2 客户端程序
				现在编写基于 UDP的网络客户端应用程序,与上面基于 TCP的网络应用程序一样,这里也在同一
				个 UdpSrv工作区中创建客户端应用程序。同样,创建一个空的 Win32 ConsoleWin32 Console 
				Application类型的工程,名称为: UdpClient。然后为该工程添加一个 C++源文件: 
				UdpClient.cpp,然后在此文件中添加实现基于 UDP的网络客户端程序的代码,结果如例 14-4
				所示。 
				例 14-4 
				
				
				#include  
				#include  
				void tnain ( ) 
				{ 
				11加载套接字库 
				WORD wVersionRequested: 
				WSADATA wsaData: 
				int err: 
				wVersionRequested = MAKEWORD( 1 , 1 }: 
				err = WSAStartup( wVersionRequested, &wsaData }: 
				if ( err ! = 0 ) { 
				return; 
				
				if ( LOBYTE( wsaData.wVersion ) != 1 II 
				HIBYTE( wsaData.wVersion ) != 1 ) { 
				WSACleanup( ); 
				return; 
				
				//创建套接字 
				SOCKET sockClient=socket(AF_工NET,SOCK_DGRAM, 0) ; 
				SOCKADDR_IN addrSrv; 
				addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); 
				
				addrsrv.sin_family=AF_工NET; 
				addrSrv.sin-por t=htons(6000) ; 
				//发送数据 
				sendto (sockClient , "Hello" , strlen( "Hello") +1, 0, 
				(SOCKADDR*)&addrSrv , sizeof(SOCKADDR)) ; 
				
				//关闭套接字 
				closesocket(sockClient); 
				WSACleanup(); 
				
				同样,因为在利用套接字编写网络应用程序时,都需要套接字库,所以这部分代码可以重用。因
				此可以直接复制上面程序中己有的这部分代码。然后按照上面介绍的基于UDP(面向无连接)的
				socket编程的客户端程序流程完成该程序。
				llJ创建套接宇 (socket)。同样,首先需要调用socket创建套接字,第一个参数只能是AF_INET(或
				PF一副ET);第二个参数是套接宇类型应该是SOCK_DGRAM;第三个参数指定为0。
				(I)向服务器发送数据 (sendto)。
				当创建完套接字之后,因为对基于 UDP的客户端程序来说,也不需要将套接字绑定到本地的P地
				址和端口号上,可以直接发送数据,这需要调用 sendto函数。所以,首先定义一个地址结构类
				型的变量: sockClient.并给其成员赋值。首先利用 inet-addr函数将点分十进制格式表示的F
				地址转换为u_long类型的数值,同样,因为是在同一台机器上运行服务器端程序和客户端程序,
				所以, JP地址可以设置为 127.0.0.1。如果是两台机器上分别运行服务器端程序和客户端程序,
				这时就应该是服务器程序运行所在的机器的 E地址。另外,端口应设置为服务器端等待请求的端
				口号,本例是6∞0。
				接下来,调用sendto函数发送一个简单的字符串: Hello.并且多发送一个字节,主要
				是为了服务器端接收到该数据后可以将最后一个元素设置为'飞O'.表示字符串的结尾。由关闭套
				接字。数据发送完成之后,调用closesocket函数关闭套接字的使用。最后,调用WSACleanup
				函数,终止对套接字库的使用。同样,本程序也需要链接库文件: ws2_32.1ib。可以按照上面介
				绍的添加库文件的方
				法,为UdpClient工程添加该库文件的链接。最后,利用Build命令生成客户端应用程序: 
				UdpC1ient.exe。这时,基于 UDP的服务器端和客户端程序都己经生成了,同样,服务器端程序
				应先
				启动,否则无法完成通信。然后启动客户端程序。这时,客户端程序和服务器端程序的界面如图 
				14.12所示。
				550 I ~胁'
				
				详解
				
				
				罔 14.12基于 UDP的网络应用程序运行结果
				可以看到,这时客户端己经终止了,服务器端收到一条信息: Hello。这里,服务器端作为接收
				端,客户端作为发送端。
				通过以上的程序代码,可以看到,基于 UDP的网络应用程序的编写非常简单,因为不需要建立连
				接,所以对客户端程序来说,当创建套接字之后,就可以直接利用 sendto函数发送数据了。应
				注意的是,基于 TCP和基于 UDP的网络应用程序在发送和接收数据时使用的函数是不一样的:前
				者使用 send和 recv,后者使用 sendto和 recvfrom o 
				
							

相关资源