TCP/UDP 通信编程入门(C++)
1.TCP 与 UDP 连接模式的比较
TCP:Transmission Control Protocol 传输控制协议 TCP 是一种面向连接(连接导向)的、可
靠的、基于字节流的运输层(Transport layer)通信协议.
UDP:User Datagram Protocol 用户数据报协议(UDP)是 OSI 参考模型中一种无连接的
传输层协议,提供面向事务的简单不可靠信息传送服务.
有 关 这 两种模式 如 果 你 想 了 解 更 多 的 话 , 看 这 儿 : http://baike.soso.com/v20113.htm?
syn=TCP http://baike.soso.com/v33638.htm
a).TCP Server 创建流程:
WSAStartup(...)->socket(...)->bind(...)->listen(...)->accept(...)->recv(...)->closesocket(...)->
WSACleanup();
TCP Client 创建流程:
WSAStartup(...)->socket(...)->bind(...)->connect(...)->send(...)->closesocket(...)->
WSACleanup();
b).UDP Server 创建流程:
WSAStartup(...)->socket(...)->bind(...)->recvfrom(...)->closesocket(...)->WSACleanup();
UDP Client 创建流程:
WSAStartup(...)->socket(...)->sendto(...)->closesocket(...)->WSACleanup();
上面的不用记,等下面的函数讲解完,函数理解了,也就自然串起来了。
函数解析:
int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData );① 本 函 数 初 始 化
winsock 库
EG:
WSADATA wsa;
WSAStartup(MAKEWORD(2,2),&wsa);//MAKEWORD 将前面的 2 和后面的 2 组成一个新的
WORD 。 生 成 一 个 版 本 号 。 MAKEWORD(a,b),a=2,1;b=1,0; 都 可 以 。 当 然 你 用
0x101,0x200,0x202 也没错。
SOCKET socket( int af, int type, int protocol ); ②
第一个参数指定应用程序使用的通信协议的协议族,对于 TCP/IP 协议族,该参数置
AF_INET;
第二个参数指定要创建的套接字类型,流套接字类型为 SOCK_STREAM、数据报套接字类
型为 SOCK_DGRAM;
第三个参数指定应用程序所使用的通信协议。 如果协议 protocol 未指定(等于 0),则使
用缺省的连接方式。(这个通常设置为 0)。
EG:
socket(AF_INET,SOCK_STREAM,0);
int bind( SOCKET s, const struct sockaddr FAR* name,int namelen); ③
sockaddr 结构定义如下:struct sockaddr{
u_short sa_family;
char sa_data[14];
};
评论0