关于冰盾 | 使用条款 | 网站地图
 
UDP客户端框架
UDP客户端框架
作者:冰盾防火墙 网站:www.bingdun.com 日期:2015-02-12
 

UDP客户端框架的main函数主要就是用请求的对等实体地址和端口号填充peer,并获取一个SOCK_DGRAM套接字。图2-23显示了main函数。框架的其余部分与udpserver.skel相同。

 
图2-23 udpclient.skel的main函数
将udpclient.skel复制到udphelloc.c中,并用
  1. static void client( SOCKET s, struct sockaddr_in *peerp )  
  2.    {  
  3.        int rc;  
  4.       int peerlen;  
  5.        char buf[ 120 ];  
  6.    peerlen = sizeof( *peerp );  
  7.    if ( sendto( s, "", 1, 0, ( struct sockaddr * ) peerp,  
  8.        peerlen ) < 0 )  
  9.        error( 1, errno, "sendto failed" );  
  10.    rc = recvfrom( s, buf, sizeof( buf ), 0,  
  11.        ( struct sockaddr * )peerp, &peerlen );  
  12.    if ( rc >= 0 )  
  13.        write( 1, buf, rc );  
  14.    else  
  15.        error( 1, errno, "recvfrom failed" );  
  16.  

填充客户端占位程序,以此来试用这个框架,同时对udphello进行测试。

函数client只是向服务器发送了一个空字节,读取得到的数据报,将其写入stdout,然后退出。发送空字节满足了udphello中recvfrom的要求,它会返回,这样udphello就可以发送其数据报了。

运行这两个程序时,可以得到常见的问候语,如下。

  1. bsd: $ udphello 9000 $  
  2. [1] 448  
  3. bsd: $ udphelloc localhost 9000  
  4. hello, world  
  5. bsd: $  

像往常一样,将构建代码从main中抽取出来放入库函数中。注意,库函数udp_client(图2-24)的第三个变元是sockaddr_in结构的地址,函数会用前两个变元指定的地址和端口号来填充这个结构。

  1. #include "etcp.h"  
  2.  
  3. SOCKET udp_client( char *host, char *port,  
  4.                    struct sockaddr_in *sap );  
  5.  
  6. 返回:一个UDP套接字,并填充好sockaddr_in结构  
 
(点击查看大图)图2-24 函数udp_client
【责任编辑:云霞 TEL:(010)68476606】
 

 
最新内容:
无连接的 UDP 协议[2015-02-12]
解析 Qt 网络之UDP 网络基础学习[2015-02-12]
TCP字节流与UDP数据报[2015-02-12]
创建一个UDP服务器[2015-02-12]
高级UDP扫描技术[2015-02-12]
游戏服务器:到底使用UDP还是TCP[2015-02-11]
相关内容:

合作伙伴: 黑基网 补天科技 威盾科技 站长下载 新飞金信 北京电信 ZOL应用下载
中华人民共和国增值电信业务经营许可证京ICP备14024464 公安备案号 京1081234 
版权所有©2003-2014 冰盾防火墙  www.BingDun.com 法律声明
总机:(010)51661195