通过百度可以知道:
TCP (Transmission Control Protocol)和UDP(User Datagram Protocol)协议。
TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。通过面向连接、端到端和可靠的数据包发送。通俗说,它是事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。
UDP则不为IP提供可靠性、流控或差错恢复功能。面向非连接的协议。
代码:
通常TCP的socket,我们用send、 recv来实现发送接收数据的。
#include <sys/socket.h>
ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);
ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);
sockfd:指定发送端套接字描述符。 buff: 存放要发送数据的缓冲区 。 nbytes: 实际要改善的数据的字节数 。flags: 一般设置为0。
返回值:成功执行时,返回已发送或接收的字节数。失败返回-1,errno为错误码
如果recv函数在等待协议接收数据时网络断开了,那么调用 recv的进程会接收到一个SIGPIPE信号,进程对该信号的默认处理是进程终止。
通常UDP的socket,用sendto . recvfrom
#include < sys/types.h >
#include < sys/socket.h >
int sendto ( socket s , const void * buf, int len, unsigned int flags, const struct sockaddr * to , int tolen ) ;
int recvfrom(int s,void *buf,int len,unsigned int flags ,struct sockaddr *from ,int *fromlen);
- \s: socket描述符。
- \buf: UDP数据报缓存地址。
- \len: UDP数据报长度。
- \flags: 该参数一般为0。
- \to(from): sendto()函数参数,struct sockaddr_in类型,指明UDP数据发往哪里报(发到哪)。
- \tolen: 对方地址长度,一般为:sizeof(struct sockaddr_in)。
- \fromlen:recvfrom()函数参数,struct sockaddr_in类型,指明从哪里接收UDP数据