2013-04-08 99 views
0

任何人都可以指引我在IO :: Socket :: INET中开发的双向客户端服务器脚本,发送和接收短信? 我需要研究它的流程和工作。 TY。双向客户端服务器

+0

我一直想写一个,但我有机器人能够发展一个。我也无法找到合适的代码。所以,如果你能告诉我一个.. – user2250900 2013-04-08 11:37:20

+1

你没有通过这一个... http://stackoverflow.com/questions/15844918/2-way-communication-between-server-client-scripts – 2013-04-08 11:37:41

+0

这可以帮助,但不是双向的,我猜测.. http://www.conceptsolutionsbc.com/perl-articles-mainmenu-41/25-modules-and-packages/54-writing-client-server-applications-using-iosocket – 2013-04-08 11:38:05

回答

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(); 
+0

这是一个甜蜜的代码! :) TY – user2250900 2013-04-08 20:00:17

2

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

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

我可以从客户端发送文本到服务器,但我无法将其发送到服务器(确认)。 是否需要等待响应或任何这样的事情在编? – user2250900 2013-04-08 12:09:45

+3

当然你必须等待回应。如果你的客户没有得到回应而退出,它不会得到它。你需要等待,就像我展示服务器一样。 – ikegami 2013-04-08 12:19:30