ページ 11

C言語(Winsock)からPerlへのデータ送信について

Posted: 2011年8月04日(木) 00:14
by poku
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";
}
}
}
}

Re: C言語(Winsock)からPerlへのデータ送信について

Posted: 2011年8月04日(木) 12:02
by softya(ソフト屋)
申し訳ないですが、マルチポストですので相互リンクをお願いします。
http://dixq.net/board/board.html

「C言語(Winsock)からPerlへのデータ送信について - Yahoo!知恵袋」
http://detail.chiebukuro.yahoo.co.jp/qa ... 1368056863

Re: C言語(Winsock)からPerlへのデータ送信について

Posted: 2011年8月04日(木) 12:51
by poku
すみません、あちらの質問は取り消させていただきました。

Re: C言語(Winsock)からPerlへのデータ送信について

Posted: 2011年8月04日(木) 13:13
by softya(ソフト屋)
相互リンクしてもらえば消さなくても良かったのですが・・・。まぁ、済んだことなので今後気をつけてくださいね。

まず、見づらいのでcodeタグの利用をお願いします。Perlですよね?
あと、実際のパケットは確認されていますか? winsharkなどの情報があれば貼ってください。

Re: C言語(Winsock)からPerlへのデータ送信について

Posted: 2011年8月04日(木) 13:42
by poku
はい、以後気をつけます。

>>まず、見づらいのでcodeタグの利用をお願いします。Perlですよね?
codeタグですね。やってみます。
サーバーサイドはPerlで間違いありません。

>>あと、実際のパケットは確認されていますか? winsharkなどの情報があれば貼ってください。
winsharkをはじめて使うのでどれがどのログだか・・・すみません;;
サーバー(perl)からクライアント(C)への文字列送信に関しては無事送信できています。

Re: C言語(Winsock)からPerlへのデータ送信について

Posted: 2011年8月04日(木) 14:10
by poku
すみません。
どうやらPerl側の複数処理にバグがあった模様です。
返信をいただきありがとうございました。