Windows C语言网络编程快速入门
C语言的学习,一般的方式是:先学C,然后是C++,
最好还要有汇编语言和微机原理基础,然后才是Visual
C++。这样的方式,对学习者来说,要花费很多时间和
精力。而在学校教学中,也就没有时间深入学习Win—
dows编程的实用技术了。
其实,具有了C语言基础后,再有一些基本的C++
类的概念,就可以直接学习Windows C编程了。
i
. 走近Windows C语言
很多语言都把显示一个 “Hello,World Ill做为第一
个人门程序, C语言的第一个程序是这样的:
烈 m:lude
协议,
Winsock是首选接口。
用Visual C++6.0编译Windows C程序,使用
Winsock API函数时,首先要把wsock32.1ib添加到
它的库模块中,否则在链接的时候会出现 “e r r o r
投稿信箱:tougao@csdn.net
LNK2001”错误。
添加wsock32.1ib的具体步骤是:打开 “工程”菜
单,选择 “设置”,在弹出的 “Project settings”对话框
中,点击 “link”选项卡,然后在对象/库模块文本框
中添加 “wsock32.1ib”。
最简单的网络编程是获取本机的主机名和IP地址,
这个程序使用了WSAStart()、WSAClenaup()、
gethostname()、gethostbyname()四个Winsock API
函数,这四个函数的功能和使用方法介绍如下 :
1.WSAStartup():
【函数原型】
int PASCAL FAR WSAStartup(W ORD
wVersionRequired,LPWSADATA lpWSAData);
【使用说明】
每一个使用win sock的应用程序,都必须进行
WSAStart函数调用,并且只有在调用成功之后才能使用
其它的Winsock网络操作函数。
wVersionRequired:<输入参数>表示欲使用的w
insock版本,这是一个wORD类型的整数,它的高位
字节定义的是次版本号,低位字节定义的是主版本号。
LpWSAData:<输出参数>是一个指向WSADATA
资料的指针。这个资料我们一般不使用。
返回值:调用成功返回0;否则,返回出错信息。
2.WSAClenaup():
【函数原型】
mt PASCAL FAR WSA Cleanup(void);
【使用说明】
wmsock使用后,要调用W SACleanup函数关闭网
络设备,以便释放其占用的资源。
3.gethosmame()
【函数原型】
int PASCAL FAR gethostname fchar FAR +
name,int namelen);
【使用说明】
该函数可以获取本地主机的主机名,其中:
name:<输出参数>用于指向所获取的主机名的缓
冲区的指针。
Namelen:<输入参数>缓冲区的大小,以字节为
www.csdII.net/magazine 45
维普资讯 http://www.cqvip.com
单位。
返回值:若无错误,返回0;否则,返回错误代码。
4.gethostbyname()
【函数原型】
struct h0stent FAR } PASCAL FAR
gethostbyname(const char FAR }name);
【使用说明】
该函数可以从主机名数据库中得到对应的 “主机”。
该函数唯一的参数 n a m e就是前面调用函数
aethostnameO得到的主机名。若无错误,刚返回一个指
向hostent结构的批针,它可以标识一个 “主机”列表。
Hostent结构定义如下:
St~ ct hOstent
f
ohar FAR h_name;
FAR FAR★ tL五1 ases:
short h add— ,e:
d ’ FAR FAR口 h addr-1ist;
)
其 中 :
h
— name:<输入参数>主机名地址 (PC)。
h— aliases:一个由主机备用名组成的空终止数组。
h_addrtype:返回地址的类型,对于wmsock,这个
域总是PF_INET。
h— lenth:每个地址的长度 (字节数),对应于
PF INET域应该为4。
h_addr_ Est:应该以空指针结尾的主机地址的列表,
返回的地址是以网络顺序排列的。
其中,h_addr_list[O]存放的就是本地主机的4个字
节的IP地址,即:h—addr_list[O][O].h—addr_list[O][1].
h_addr_Est[0][2].h_addr~ist[0][3]
一 个简单的用消息框显示主机名和IP地址的源程序
如下 :
硝 c1ude· nsOck.
int WSA_return;
Ⅵ 0 .A W 0ata:
HOSTENT host entry;
char host~ [2S6];
char host_add~ss[256]:
{nt APIENTRY wi a1 n(HINSTANCE hInstance。H]ENSTANCE
46 倒 一再重■-.撕‘一
hPrevlnstance,
f
,
if(wSA_return==0)
t
host ent
,2S6);
f01o6t咖 !=国
f
时 O’。sc address,’ .’,d削 ., ’,
O擞 舯臼 耐 Hst嘲 阻瑚Dff),
t舯 曲 耐 1话t嘲 I柚x0Dff)。
O擞 舯臼 耐 】话t嘲 暖I触目∞ff)。
O擞 舯臼 st嘲 疆I固c嘲DF );
MeSsaQem~(NULL。hos tess,host_minetMB_OK);
)
)
WSACIeanupO;
return 0;
深入编程
口前面显示IP地址的时候,我们使用的是消息框,规
范一点的编程应该使用对话框,如何编辑一个对话框,很
多
中都有介绍,编辑的对话框可参考图5的运行界面。
头文件Get—IP.h如下:
B0OL A Ehm HOStname_ipDlgPro(~ hDlg,UlNT message。
WPARAM wParam。LPARAM 1Par狮):
这个程序只使用了一个对话框过程,一般把这个过
程的声明放在头文件中。
口源程序Get—IP.c:
别nclude~ nsocI‘2.
nclude"Get_IP.h”
私 ∞ur e.hl’
,,趔 ,头文件在创建资蔫
||袭铰链箍)
{“嘲 肿 扪_I:
自姓 成,
HOSTENT ‘host entry;
charhostj t~e[2s6];
char host_address[2S6】:
1 nt APIENTRY wi nMai n(HINSTANCE hznstance。HINSTANCE
蜩琏志n 。 I p 陬1 1hd f艳,int n(两蠡I
f
计 ^肿 lm=o)
毛
维普资讯 http://www.cqvip.com
gethostname(host_name。2S6):
if(host_entry!=O)
f
惜prfntfo岱t r毯s,’ 删 削附 ’。
慨 t舯b 硼 】话t隧 l茜c-∞ 。
赋蟹r瞳, 础II:3设 嘲踟m∞Ff)。
瓯舯 h.碰 : St嘲阅 mFf),
呔蜘 出 :.】{豉咖。8阳d】0f );
)
)
~ACleanupO;
O盲a1OgBOx(hInstance,”DIALOG.1”,NULL。(DLGPROC)
H口酮黼 jpD1gPro):
)
retl,lr'rl O:
BOOt.APIENTRY Hostname_ipolgPrO(H~ND holg。UINT message。
嘲 R州 wParal~,LPARMt 1Param)
毛
s~tch(message)
f
caseI~_INITDIALOG:
嘞 盯IcTl1日;
case WM_C0MMAND:
if(LOWORD(wParam)==IDOK)
毛
蚓 驴强孵瞅 t D1g,ii)c._B)m ,hos%.sk~e);
Setol gTtemText I[hol g,IDC—EDIT2,
host_address);
SetD1gItemText(holg,IDO~NCEL,”确定”);
}
if(LOWORD(WParam)==IDCANCEL)
Bcbialogl 啁g, ;
三.利用VisualC++6.0绾译Windows
C程序
利用Visual C++6.0编译Windows C程序一般要
经过以下四个步骤:新建项目、添加代码、添加资源和
编译链接。下面我们简单地说明上面所介绍的获取本机
的主机名和IP地址程序的编译过程:
一 新建项目
1.启动Microsoft Visual C++,然后在 【文件】菜
单中先择 【新建】命令,弹出如图1所示的 【新建】对
话框:
投稿信箱:tougao@csdn.net
●
图 1
2.在 【新建】对话框中,系统打开的是默认的 【工
程】选项卡,【工程】选项卡左侧的列表框中有多种建立
工程的方式,我们选中 “Win32 Application”选项。
3.在【位置】文本框中输入新建工程的路径 (例如:
F:\),在 【工程】文本框中输入工程名称 (例如:
Get
— IP)。
4. 选中 【平台】列表框中的Win32复选框,然
后单击 【确定】按钮 。
5. 在随后的对话框中,都选择默认设置,完成
后,进入图2所示界面:
图 2
二 添加代码
在Visual C++6.0中,源代码一般存放在源代码文
件和头文件中,往项目中添加源代码是非常方便的,为
项目新建一个源代码文件一般要按下述方法操作:
1.选择 【工程】l【添加工程】l【新建】选项,弹
出图3(见下页)所示 【新建】对话框。
2.在对话框的 【文件】选项卡中,左侧的列表框选中
“C++SOljr。e Fne”选项,右侧选中 【添加工程】复选框,
并在 【文件】文本框中输入源文件名 (例如:Get一 .C)。
一 一’一
维普资讯 http://www.cqvip.com
维普资讯 http://www.cqvip.com