2.1.2面向与非面连接协议所使用的函数

1.面向连接的协议

在面向连接的协议中,两台计算机之间在进行数据收发前,必须先在两者之间建立一个通信通道,以确保两台计算机之间存在一条路径可以相互沟通。在数据传输完毕之后,切断这条通信通道。该种方式相当于打电话。
面向连接的协议使用的是TCP协议,服务器与客户端建立通信信道所需要的基本Winsock函数如下:

服务器端函数:

socket()->bind->listen()->accept()->send()/recv()->closesocket()

客户端函数:

socket()->connet()->send()/recv()->closesocket()

2.非面向连接的协议

在非面向连接的协议中,发送端只要直接将要发送的数据传出即可,不需要理会接送方是否能够接收到数据。而接受端在接受数据时,也不会响应消息通知发送给发送端。该种方式相当于写信,将写好的信放到信箱中,但是却不能保证收信人真的能够收到这封信。
非面向连接使用的是UDP协议,服务器与客户端通信所需要的基本Winsock函数如下:

服务器端函数:

socket()->bind->sendto()/recvfrom()->closesocket()

客户端函数:

socket()->sendto()/recvfrom()->closesocket()

linux下的sock函数:

socket(domain,int type,int protocol)
用于创建一个新的套接字,返回一个表示套接字的文件描述符,错误时返回-1。
connect(int fd,struct sockaddr *remove_host,socklen_t addr_length)
将一个套接字(有文件描述符fd指定)连接远程主机。成功返回0,错误返回-1。
bind(int fd,struct sockaddr *local_addr,socklen_t addr_length)
将套接字绑定到一个本地地址,以便它可以侦听传入的连接。成功返回0,错误返回-1。
listen(int fd,int backlog_queue_size)
侦听传入的连接并将连接请求排队,知道数量达到backlog_queue_size。成功返回0,错误返回-1。
accept(int fd,sockaddr *remove_host,socklen_t *addr_length)
在一个绑定的端口接受一个传入的连接。远程主机的地址信息写入remote_host结构中,地址结构的实际大小写入到addr_length中。这个函数返回一个新的套接字文件描述符来标识已经连接的套接字,错误返回-1。
`send(int fd,void
buffer,size_t n,int flags)从*buffer向套接字fd发送n个字节,返回值为发送的字节数,错误返回-1。recv(int fd,void buffer,size_t n, int flags)`
从套接字fd接受n个字节到
buffer中,返回值为发送的字节数,错误返回-1。

本文标题:2.1.2面向与非面连接协议所使用的函数

文章作者:water

发布时间:2018年07月01日 - 13:14:08

最后更新:2018年07月20日 - 19:55:09

原始链接:http://9cat.top/2018/07/01/2-1-2面向与非面连接协议所使用的函数/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

------ 本文结束------
分享
分享