一、面向连接协议与面向非连接协议简谈
- 面向连接协议
两台计算机进行数据收发前,必须在两者间建立通信信道,数据传输完毕,信道切断。这个方式叫做面向连接协议,跟打电话很想。
给女朋友打电话,需要先拨号建立通信,打电话就是数据传输,打完电话,要挂电话就是信道切断。面向连接协议使用的是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库。
- 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();
点击数:74