ソケットでのデータ送受信について教えてください
はじめまして。
Perlでのソケット通信プログラムで質問があります。
現在ソケットで通信を行うテストプログラムを作っているのですが、
クライアントからサーバへの片方向送信は出来るのですが、
クライアントからデータ受信後、サーバからクライアントへ応答を
返す処理が上手くいきません。
私としては、クライアントとサーバの処理を逆にすればよいだけかな
と思っているのですが認識違いでしょうか?
宜しくお願いします。
環境
OS:Linux
言語:Perl5.8
■上手くいく場合(かなり省略します。ポイントだけ)
サーバ側
$client=accept(C_SOCKET, P_SOCKET);
while(<C_SOCKET>){
printf("%s",$_); #受信データ
}
クライアント側
socket (SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, pack_sockaddr_in(9000,$ipaddr_bin));
print SOCKET "Test Data!!\n";
→サーバ側端末にTest Data!!と表示
■送受信しようとしてダメなもの
サーバ側
$client=accept(C_SOCKET, P_SOCKET);
while(<C_SOCKET>){
printf("%s",$_); #受信データ
}
print C_SOCKET "Return Data!!\n";
クライアント側
socket (SOCKET, PF_INET, SOCK_STREAM, 0);
connect(SOCKET, pack_sockaddr_in(9000,$ipaddr_bin));
print SOCKET "Test Data!!\n";
while(<SOCKET>){
printf("%s",$_); #応答データ
}
→サーバ側にはTest Data!!すら表示されない。
もちろんクライアント側にも。
お礼
ありがとうございます。使っているライブラリが違うので直接的な解決には至りませんでしたが、参考にさせて頂きます。