透析ICMP协议(二): Windows Socket 简介

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 bugfree 的 blog

透析icmp协议(二):
 windows socket 简介
===============================
这篇文章出自bugfree/csdn
平台: vc6 windows xp

简介:
-------
 windows 的socket函数有许多, 我没有做详细介绍, 这里的函数都是简要说明其用途, 详细用法请参考msdn.
 这里的主要目的是为了后面的三个应用服务.

函数说明:
--------- 

wsastartup函数
 初始化winsock
[声明]
 int wsastarup(word wversionrequested,lpwsadata lpwsadata);
[参数]
 wversionrequested - 要求使用winsock的最低版本号
 lpwsadata - winsock的详细资料
[返回值]
 当函数成功调用时返回0
 失败时返回非0的值
---

socket函数
 用于生成socket(soket descriptor)
[声明]
 socket socket(int af,int type,int protocol);
[参数]
 af - 地址家族(通常使用:af_inet)
 type - socket的种类
 sock_stream : 用于tcp协议
 sock_dgram : 用于udp协议
 protocol - 所使用的协议
[返回值]
 当函数成功调用时返回一个新的socket(socket descriptor)
 失败时返回invalid_socket.
---

inet_addr函数
 地址转换, 把"a.b.c.d"的ip地址转换为32位长整数
[声明]
 unsigned long inet_addr ( const char far *cp );
[参数]
 cp - 指向ip地址字符串的指针
[返回值]
 当函数成功调用时返回用32位整数表示的ip地址
 失败时返回inaddr_none.
---

gethostbyname函数
 从主机名获取主机信息.
[声明]
 struct hostent far * gethostbyname ( const char far *name );
[参数]
 name - 指向主机名字符串的指针
[返回值]
 当函数成功调用时返回主机信息
 失败时返回null(空值)

---

recv函数
 利用socket进行接受数据.
[声明]
 int recv ( socket s , char far *buf , int len , int flags );
[参数]
 s - 指向用socket函数生成的socket descriptor
 buf - 接受数据的缓冲区(数组)的指针
 len - 缓冲区的大小
 flag - 调用方式(msg_peek 或 msg_oob)
[返回值]
 成功时返回收到的字节数.
 如果连接被中断则返回0
 失败时返回 socket_error

---

sendto函数
 发送数据.
[声明]
 int sendto ( socket s , const char far *buf , int len , int flags , const struct sockaddr far *to , int token );
[参数]
 s - 指向用socket函数生成的socket descriptor
 buf - 接受数据的缓冲区(数组)的指针
 len - 缓冲区的大小
 flag - 调用方式(msg_dontroute , msg_oob)
 to - 指向发送方socket地址的指针
 token - 发送方socket地址的大小
[返回值]
 成功时返回已经发送的字节数.
 失败时返回socket_error


链接:
-------
我的其它文章,<<透析icmp协议>>, 和其它文章参见:
http://www.csdn.net/develop/author/netauthor/bugfree/

联系方式:
-------
 zhangliangsd@hotmail.com  

本文关键:ICMP ping tracert
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top