C言語(Winsock)からPerlへのデータ送信について
Posted: 2011年8月04日(木) 00:14
C言語(Winsock)からPerlへのデータ送信について
現在クライアントはC,C++、サーバーはPerlにてアプリケーションの作成をしています。
Winsockを利用してサーバーへ接続・切断する事はできました。
また、サーバーからクライアントへのデータ送信、受信についてもできたのですが、
クライアントからサーバーへのデータ送信がうまくいきません。
CからCへの通信プログラム作成経験はあるのですが、
CからPerlへの通信は初となるので悪戦苦闘しています。
よろしければ助言をいただければありがたいです。
-----------------------------------------------------------------
■クライアント
接続までの処理は特に変わった動作はさせていないので省略させていただきます。
send(serverSocket, "Hello", (int)strlen("Hello"), 0);
-----------------------------------------------------------------
■サーバー
複数の接続を処理できるようにしています。
use IO::Select;
use IO::Socket;
my $listener = new IO::Socket::INET(
Listen=>5,
LocalAddr=>'localhost',
LocalPort=>6666,
Proto=>'tcp',
Reuse=>1);
my $selector = new IO::Select( $listener );
while(my @ready = $selector->can_read) {
foreach my $fh (@ready) {
if($fh == $listener) {
# 新規接続
my $new = $listener->accept;
$selector->add($new);
print $new "Hello";
print "Connected.\n";
}
else {
# 入力の処理
my $input = <$fh>;
if(defined($input)){
#print "recv: ";
print $fh $input;
}
else{
$selector->remove($fh);
$fh->close;
print "Close.\n";
}
}
}
}
現在クライアントはC,C++、サーバーはPerlにてアプリケーションの作成をしています。
Winsockを利用してサーバーへ接続・切断する事はできました。
また、サーバーからクライアントへのデータ送信、受信についてもできたのですが、
クライアントからサーバーへのデータ送信がうまくいきません。
CからCへの通信プログラム作成経験はあるのですが、
CからPerlへの通信は初となるので悪戦苦闘しています。
よろしければ助言をいただければありがたいです。
-----------------------------------------------------------------
■クライアント
接続までの処理は特に変わった動作はさせていないので省略させていただきます。
send(serverSocket, "Hello", (int)strlen("Hello"), 0);
-----------------------------------------------------------------
■サーバー
複数の接続を処理できるようにしています。
use IO::Select;
use IO::Socket;
my $listener = new IO::Socket::INET(
Listen=>5,
LocalAddr=>'localhost',
LocalPort=>6666,
Proto=>'tcp',
Reuse=>1);
my $selector = new IO::Select( $listener );
while(my @ready = $selector->can_read) {
foreach my $fh (@ready) {
if($fh == $listener) {
# 新規接続
my $new = $listener->accept;
$selector->add($new);
print $new "Hello";
print "Connected.\n";
}
else {
# 入力の処理
my $input = <$fh>;
if(defined($input)){
#print "recv: ";
print $fh $input;
}
else{
$selector->remove($fh);
$fh->close;
print "Close.\n";
}
}
}
}