Windows网络编程总结
一、面向连接协议与面向非连接协议简谈
1.面向连接协议
两台计算机进行数据收发前,必须在两者间建立通信信道,数据传输完毕,信道切断。这个方式叫做面向连接协议,跟打电话很想。
给女朋友打电话,需要先拨号建立通信,打电话就是数据传输,打完电话,要挂电话就是信道切断。面向连接协议使用的是TCP协议
2.面向非连接协议
发送端只需要发送数据,不需理会接收端是否接收。接收端只需要接收数据,不需响应发送端他收到数据。这种方式叫做面向非连接协议,跟写信很像,讲写好的信放到信箱,无法确保收信人能收到这封信。面向非连接协议采用的是UDP协议。
3.相应的函数
//面向连接协议 //服务器端 socket()->bind()->listen()->accept()->send()/recv()->closesocket() //客户端 socket()->connet()->send/recv()->closesocket() //面向非连接协议 //服务器端 socket()->bind()->sendto/recvfrom()->closesocket() //客户端 socket()->sendto/recvfrom()->closefrom()
二、网络编程基础知识
win网络编程需要使用Winsock相关函数,所以必须先初始化Winsock库,使用完成后必须释放Winsock库。
1.Winsock库的初始化和释放
//Winsock库初始化 int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData) //第一个参数为Winsock版本号 目前常用版本号为2.2 第二个参数为一个指向WSADARA的指针 //Winsock库释放 int WSACleanup (void) //初始化与释放Winsock库 代码示例 WORD wVersionRequested; WSADATA wsaData; int err; wVersionRequested = MAKEWORD(2,2); err =WSAStartup(wVersionRequested,&wsaData); if(err!=0) { return -1; } if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2) { WSACleanup(); return -1; } // ... WSACleanup();