gpt4 book ai didi

perl - 服务器端套接字程序在PERL中不起作用

转载 作者:行者123 更新时间:2023-12-03 12:04:16 25 4
gpt4 key购买 nike

我在PERL中创建了一个简单的Socket程序。服务器端程序似乎没有完成套接字的创建。创建Socket后,它不会打印该语句。客户端则等待来自服务器的消息,然后关闭套接字。在打印套接字时,它获取服务器套接字的引用,但不执行任何操作。请在下面找到简单的服务器和客户端程序。

服务器端程序:

#!usr/bin/perl
#tcpserver.pl

use IO::Socket::INET;

my($socket,$client_socket);

my($peeraddress,$peerport);

#Socket creation
$socket = new IO::Socket::INET(LocalHost=>'127.0.0.1',LocalPort=>'5000',Proto=>'tcp',Listen=>5) or die "Error in Socket Creation: $!n";

print "Server Waiting for client connection on port 5000";

while(1)
{
$client_socket = $socket->accept();

$peer_address = $client_socket->peerhost();

$peer_port = $client_socket->peerport();

print "Accepted New Client Connection From : $peer_address $peer_port\n";

#Send message to the client

$data = "Message from Server";

$client_socket->send($data);

}

$socket->close();

最佳答案

您的套接字创建可能没有任何问题。您的打印语句可能会被缓冲。可以在print语句的末尾添加一个新行char,或者在脚本的开头设置$|=1;,以强制Perl刷新print语句而不对其进行缓冲。

在您的代码中使用严格和警告也是一种很好的做法。

use strict;
use warnings;
use IO::Socket::INET;
$|=1;

my($socket,$client_socket);
my($peeraddress,$peerport);

#Socket creation
$socket = new IO::Socket::INET(LocalHost=>'127.0.0.1',LocalPort=>'5000',Proto=>'tcp',Listen=>5) or die "Error in Socket Creation: $!n";

print "Server Waiting for client connection on port 5000";

while(1)
{
my $client_socket = $socket->accept();
my $peer_address = $client_socket->peerhost();
my $peer_port = $client_socket->peerport();
print "Accepted New Client Connection From : $peer_address $peer_port\n";

#Send message to the client
my $data = "Message from Server";
$client_socket->send($data);
}

$socket->close();

关于perl - 服务器端套接字程序在PERL中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37650492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com