TCP
数据传输慢,UDP
数据传送快
TCP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket(); SOCKET SocketListen =socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);
2、设置socket属性,用函数setsockopt(); * 可选
3、绑定IP地址、端口等信息到socket上,用函数bind(); SOCKET_ERROR = bind(SocketListen,(const sockaddr*)&addr,sizeof(addr))
4、开启监听,用函数listen(); SOCKET_ERROR == listen(SocketListen,2)
5、接收客户端上来的连接,用函数accept(); SOCKET SocketWaiter = accept(SocketListen, _Out_ struct sockaddr *addr _Inout_ int *addrlen);
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接; closesocket(SocketListen);closesocket(SocketWaiter);
8、关闭监听;
TCP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置要连接的对方的IP地址和端口等属性;
5、连接服务器,用函数connect();
6、收发数据,用函数send()和recv(),或者read()和write();
7、关闭网络连接;
int send( _In_ SOCKET s, //向哪个socket发送,accept返回的socket。 _In_ const char *buf, _In_ int len, _In_ int flags ); send(SocketClient,(const char *)&fh,sizeof(fh),0); recv(SocketClient,szbuf,sizeof(szbuf),0);
与之对应的UDP编程步骤要简单许多,分别如下:
UDP编程的服务器端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();
4、循环接收数据,用函数recvfrom();
5、关闭网络连接;
UDP编程的客户端一般步骤是:
1、创建一个socket,用函数socket();
2、设置socket属性,用函数setsockopt();* 可选
3、绑定IP地址、端口等信息到socket上,用函数bind();* 可选
4、设置对方的IP地址和端口等属性;
5、发送数据,用函数sendto();
6、关闭网络连接;
int recvfrom( _In_ SOCKET s, //绑定的socket _Out_ char *buf, _In_ int len, _In_ int flags, _Out_ struct sockaddr *from, //用来接收对方的 _Inout_opt_ int *fromlen ); int nres=recvfrom(pThis->m_socketListen,szBuf,sizeof(szBuf),0,(sockaddr*)&addrClient,&nSize);//0处标志位 sendto(m_socketListen,szBuffer,nSize,0,(const sockaddr*)&addr,sizeof(sockaddr_in))
注意区分recvfrom函数,由于是UDP非连接的所以在接受数据是要接受对方的ip等信息用于稍后发送信息,而TCP使用已连接的套接字维护连接信息。
SOCK_STREAM这种的特点是面向连接的,即每次收发数据之前必须通过connect建立连接,而SOCK_DGRAM这种是User Datagram Protocol协议的网络通讯,它是无连接的,不可靠的。
很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。
TCP
对应的协议FTP:
定义了文件传输协议,使用21端口。Telnet:
一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。SMTP:
邮件传送协议,用于发送邮件。服务器开放的是25号端口。POP3:
它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。HTTP:
是从Web服务器传输超文本到本地浏览器的传送协议。
UDP
对应的协议DNS:
用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。SNMP:
简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。TFTP(Trival File Transfer Protocal)
,简单文件传输协议,该协议在熟知端口69上使用UDP
服务。
原文:https://www.cnblogs.com/GuoXinxin/p/11657676.html