- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用 perl 写了一个多客户端套接字脚本。我能够使用 fork 与多个客户端建立连接。但是在建立新连接后,我只能发送和接收一次。我无法在客户端套接字上进一步读取或写入,以进行扩展对话。
目标:
客户端连接后,它将其 ID 发送到服务器。收到 ID 后,服务器将使用其 ID 获取客户端的文件,并将其逐页发送给客户端。由于客户端只能接受有限字节的数据,我们不能在单个套接字发送中发送它。所以我需要发送一个 1024 字节的数据。客户必须确认,我必须再次发送下一页。像这样,我必须为每个客户端同时进行长时间的套接字连接,直到他们都收到整个文件。
代码示例:
use strict;
use warnings;
use IO::Socket::INET;
# flush after every write
$| = 1;
my $data;
my ( $server_socket, $client_socket );
my ( $peer_address, $peer_port );
$server_socket = new IO::Socket::INET(
LocalHost => '192.168.0.7',
LocalPort => '1008',
Proto => 'tcp',
Listen => 5,
Reuse => 1
) or die "ERROR in Socket Creation : $!\n";
print "SERVER Waiting for client connection on port 1008";
#$SIG{CHLD}=sub {wait()}; # Signal waiting for the Child process created
while ( $client_socket = $server_socket->accept() ) {
my $pid = fork(); # Creating child as soon client creates a connection
if ( $pid == 0 ) # Checking the child process
{
my $peer_address = $client_socket->peerhost();
my $peer_port = $client_socket->peerport();
print "Accepted New Client Connection From : $peer_address, $peer_port\n";
$client_socket->recv( $data, 1024 );
print $data;
$client_socket->send("FileLine1");
#Get the acknowledgement
$client_socket->recv( $data, 1024 );
$client_socket->send("FileLine2");
#Get the end acknowledgement
$client_socket->recv( $data, 1024 );
exit(0); # Exiting child process
}
}
我的问题是:我们可以依靠 perl 来做这件事吗?或者我们是否需要使用其他平台,如 Java 等。
最佳答案
我强烈建议您使用 Net::Server CPAN 模块来构建您的服务器。Net::Server
尝试成为通用服务器。它包括作为 inetd 进程、单连接服务器、 fork 服务器、维护恒定数量的预 fork 子节点的预 fork 服务器或作为托管预 fork 服务器运行的能力,该服务器根据服务器负载维护子节点数量.
关于perl - 多客户端全双工 Perl 套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25968736/
我必须实现使用特定源端口发送数据并同时监听该端口。全双工。有谁知道如何在java上实现它。我试图创建单独的线程来监听套接字输入流,但它不起作用。我无法将 ServerSocket 和客户端套接字绑定(
我有一个在 Jersey (GlassFish 3.1.1) 上运行的 RESTful Web 服务。这个有点不寻常——它使用 HTTP 流。客户端和服务器有一个长时间运行的对话,在对话中它们不断地向
我在两个主机之间建立了全双工连接,这两个主机与一个始终监听 NetworkStream.Read() 的线程交换数据。我怎样才能优雅地关闭连接避免: 1-两侧read()函数的死锁 2- 读取线程的
该项目是通过 ZeroMQ 构建 Python 和 C# 程序之间的消息传递机制。 我希望消息能够随时从两端传入/传出,这不是基本的请求-回复模型,也就是 REQ/REP。我能想到的一种方法是在两个端
是否有 C 中全双工 ALSA 连接的示例?我读到它受支持,但我看到的所有介绍性示例都记录或播放了声音样本,但我希望有一个处理程序可以为我的 VoIP 应用程序执行这两项操作。 非常感谢您的帮助,延斯
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 2 年前。 Improve this qu
我是一名优秀的程序员,十分优秀!