网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
Winsock编程宝典
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
ice) 的 port 号码及通讯协定(tcp/udp)来 获取该服务的其他资料。
格式: struct servent * PASCAL FAR getservbyport( int port, const char FAR *proto );
参数: port 服务的 port 编号
proto 通讯协定名称
传回值: 成功 - 一指向 servent 结构的指标
失败 - NULL (呼叫 WSAGetLastError() 可得知原因)
说明: 利用 port 编号及通讯协定来获得该服务的名称、别名等。

程式中的使用方法分别为:

char serv_name[20];
char proto;
struct servent far *svptr;
/* 假设 serv_name 及 proto 已先设好服务名称及通讯协定 */
svptr = (struct servent FAR *)getservbyname( (char far *)serv_name, (c har far
*)proto )

int serv_port;
char proto;
struct servent far *svptr;
/* 假设 serv_port 及 proto 已先设好服务所用的 port number 及通讯协定 * /
svptr = (struct servent FAR *)getservbyport( htons(serv_port), (char f ar*)proto) )

  Winsock 环境下,我们能够查询到的服务资料都是存放在 local 的「services」档中;这个档所存放的都是 well-known 的服务,基本上我们是不需去更改它的。读者也可以将自己提供的服务加到这个档中,不过您所用的服务资料要公诸於世,不然别人的services 档中可是没有您的服务的资料哟。

  最後的这组 getprotobyname() 及 getprotobynumber() 函式是用来取得一些 「协定」的资料,比如 tcp、udp、igmp 等。一般而言,我们是不太会用到的。

◎ getprotobyname():依照通讯协定(protocol) 的名称来获取该通讯协定的其他资料。
格式: struct protoent FAR * PASCAL FAR getprotobyname(const char FAR *name );
参数: name 通讯协定名称
传回值: 成功 - 一指向 protoent 结构的指标
失败 - NULL (呼叫 WSAGetLastError() 可得知原因)
说明: 利用通讯协定的名称来得知该通讯协定的别名、编号等资料。

◎ getprotobynumber():依照通讯协定的编号来获取该通讯协定的其他资料。

格式: struct protoent FAR * PASCAL FAR getprotobynumber( int number );
参 数: number 以 host order 排列方式的通讯协定编号
传回值: 成功 - 一指向 protoent 结构的指标
失败 - NULL (呼叫 WSAGetLastError() 可得知原因)
说明: 利用通讯协定的编号来得知该通讯协定的名称、别名等资料。

程式中呼叫方式分别如下:

struct protoent far *ptptr;
char proto_name[20];
/* 假设 proto_name 已先设好协定名称 */
ptptr = (struct protoent FAR *)getprotobyname( (char far *)proto_name)

struct protoent far *ptptr;
int proto_num;
/* 假设 proto_num 已先设好协定编号 */
ptptr = (struct protoent FAR *)getprotobynumber( proto_num )

  Winsock Stack 对於应用程式呼叫 getprotobyname() 及 getprotobynumber() 的资料,是取自於local 的「protocol」档;如无需要,我们也不用去变更这个档案的内容。

(图 2)hello 程式呼叫同步资料库函式

【非同步资料库函式】

  Winsock 1.1 针对前面笔者所描述的 6 个同步资料库函式,也提供了相对的 6 个非同步资料库函式,它们分别是 WSAAsyncGetHostByName()、 WSAAsyncGetHostByAddr()、WSAAsyncGetServByName()、WSAAsyncGetServByPort()、WSAAsyncGetProtoByName()、WSAAsyncGetProtoByNumber()。

  由於它们取得的资料与同步资料库函式相同,所以笔者仅以WSAAsyncGetHostByName() 为例,说明这些非同步函式,并告诉各位读者,同步和非同步资料库函式不同的地方。

  由字面来看,「非同步」的意思就是我们发出问题时,并不会马上得到答覆,而等到系统取到资料时再告知我们

  • 下一篇资讯: WINSOCK 1.1教程
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号