面向连接的通信(LINUX)

首先介绍几个缩写,UICI(Universal Ineternet Communication Interface)叫做通用因特网通信接口,它其实是面向连接通信的一个简化的API( Application Programming Interface)应用程序接口。
UICI接口是通过流套接字和TCP实现的。
下来介绍常用的一种通信模型,客户机-服务器。
它们通信的方式是:由客户机发起请求,服务器会等待并接收来自客户机的请求,一旦客户机和服务器之间的通信信道连接起来,则它们会利用通信端点来访问这个通信信道,即使用句柄(文件描述符)来通信。
其中的端点分为通信端点和被动通信端点。被动或监听端点能够对客户机发出的连接请求进行排队,并且还有建立客户机连接所需的资源。
建立信道是一个细活,你需要知道服务器的位置,并且还要显式的命名要访问的特定的服务器。所以使用主机地址(IP地址)和一个被称作端口号的整数合并成一个套接字(英文叫Socket)来指定一个服务。
通信连接起来之后,服务器会对接收到的请求开始处理,所以了解一下面向连接的服务器策略。
串行服务器策略,它必须在完全处理完一个请求之后才能接收其他请求。

    伪代码:
    for(;;){
    wait for a client request on the listening file descriptor; 
    create a private two-way communication channel to the client; 
    while(no error on th private communication channel){
    read from the client;
    }
    process the request;
    respond to the client;
    close the file descriptor for the private communication channel;
    }     

父服务器策略,创建出一个子进程来处理与客户机的实际业务,同时让服务器去坚挺其他的请求。

    伪代码:
    for(;;){
    wait for a client request on the listening file descriptor; 
    create a private two-way communication channel to the client; 
    fork a child to handle the client;
    close file descriptor for the private communication channel;
    claen up zombie children;
    }        

线程化服务器,服务器在它自己的进程空间创建一个线程来处理客户机请求,但是,它有一个缺点:由于共享地址空间,在不同请求之间会产生干扰。

    伪代码:
    for(;;){
    wait for a client request on the listening file descriptor;
    create a private two-way communication channel to the client;
    create a detached thread to handle the client;
    }

了解了客户机-服务器的通信方式之后,下来详细的学习UICI,这玩意是把一些建立通信时必须的操作整合到一个头文件中,并不是UNIX标准中的一部分。它实现的步骤,即编程的流程如下:
UICI服务器:
1、打开一个致命的监听端口(u_open)。u_open函数返回一个监听文件描述符。
2、在坚挺文件描述符上等待连接请求(u_accept)。u_accept函数一直阻塞,直到有客户机请求连接位置,然后它返回一个通信文件描述符,并将这个文件描述符用作私有双攻客户机-服务器通信的句柄。
3、通过通信文件描述符(read和write)与客户机通信。
4、关闭通信文件描述符(close)。
UCUI客户机:
1、连接到一个指定的主机和端口(u_connect)。连接请求返回与服务器进行双攻通信时使用的通信文件描述符。
2、通过通信文件描述符(read和write)与服务器通信。
3、关闭通信文件描述符(close)。
以上是面向连接通信的初步认识,下来会补全UICI这个头文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值