背景资料:
我有一个用PHP编写的页面,它将数据发送到另一台服务器,如下所示:
$url = "example=data&to=show&the=format&im=using";
$client = stream_socket_client("<IP address and port>", $errno, $errorMessage);
fwrite($client, $url . "\n");
接收端的服务器使用xinetd启动执行实际处理的脚本。它的配置是这样的:
service b2b
{
socket_type = stream
protocol = tcp
wait = no
user = root
server = /bbj/bin/bbj
server_args = -c/samuel/config.daemon -q SS0B2R - system /tmp
groups = yes
disable = no
per_source = UNLIMITED
instances = UNLIMITED
flags = NODELAY KEEPALIVE
}
问题:让我们说有一些灾难,就像有人拔出以太网线一样,脚本是否有可能只收到一部分字符串?即:example=data&to=sh
答案 0 :(得分:0)
这不是关于xinetd,而是关于协议。
如果您使用类似stream_socket_client("tcp://www.example.com:80", $errno, ... everything is OK.
TCP是一种可靠的流传输服务,可确保收到的所有字节与发送的字节数相同且顺序正确。由于通过许多网络的分组传输不可靠,因此使用称为具有重传的肯定确认的技术来保证分组传输的可靠性。这种基本技术要求接收器在接收数据时用确认消息进行响应。发件人保留其发送的每个数据包的记录。发送方还从发送数据包时维护一个定时器,如果定时器在消息被确认之前到期,则重新发送数据包。如果数据包丢失或损坏,则需要定时器