【问题标题】:2-way Client-Server [closed]2路客户端-服务器[关闭]
【发布时间】:2013-03-30 11:14:10
【问题描述】:

谁能指导我使用 IO::Socket::INET 开发的 2 路客户端-服务器脚本,该脚本发送和接收文本消息? 我需要研究它的流程和工作。泰。

【问题讨论】:

标签: perl sockets client-server


【解决方案1】:

这是解决上述问题的最简单方法:

服务器脚本

#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket::INET;

my $socket;
my  $clientsocket;
my $serverdata;
my $clientdata;

$socket = new IO::Socket::INET (
    LocalHost => '127.0.0.1',
    LocalPort => '0155',
    Proto => 'tcp',
    Listen => 1,
    Reuse => 1
) or die "Oops: $! \n";
print "Waiting for the Client.\n";


$clientsocket = $socket->accept();

print   "Connected from : ", $clientsocket->peerhost();     # Display messages
print   ", Port : ", $clientsocket->peerport(), "\n";

# Write some data to the client  
$serverdata = "This is the Server speaking :)\n";
print $clientsocket "$serverdata \n";

# read the data from the client
$clientdata = <$clientsocket>;
print "Message received from Client : $clientdata\n";

$socket->close();  

客户端脚本:

#!/usr/bin/perl

use strict;
use warnings;
use IO::Socket::INET;

my $socket;
my $serverdata;
my $clientdata;

$socket = new IO::Socket::INET (
  PeerHost => '127.0.0.1',
  PeerPort => '0155',
  Proto => 'tcp',
) or die "$!\n";

print "Connected to the Server.\n";

# read the message sent by server.
$serverdata = <$socket>;
print "Message from Server : $serverdata \n";

# Send some message to server.
$clientdata = "This is the Client speaking :)";
print $socket "$clientdata \n";

$socket->close();

【讨论】:

  • 这是一个甜蜜的代码! :) TY
【解决方案2】:

它就像任何其他文件句柄。

while (<$socket>) {    # Receiving
   print $socket $_;   # Sending
}

【讨论】:

  • 我可以将文本从客户端发送到服务器,但我无法将其发送到服务器(确认)。 prog中是否需要等待响应或任何类似的事情?
  • 当然要等待回复。如果您的客户在没有得到响应的情况下退出,它就不会得到它。您需要等待,就像我向服务器展示的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 2015-11-17
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多