- 论坛徽章:
- 1
|
本帖最后由 yakczh_cu 于 2013-08-23 11:38 编辑
B-PC- use strict;
- use warnings;
- use IO::Socket;
- use Thread;
- my $quit = 0;
- $SIG{INT} = sub {$quit++};
- sub talk{
- my $session =shift;
- while(1){
- my $line = <STDIN>;
- if($line eq 'quit'){
- print "Bye Bye/n";
- close $session;
- }else{
- print $session ":".$line;
- }
- sleep(1);
- }
- }
- sub receive{
- my $session=shift;
- while(1){
- print $session "\r".$session->peerhost;
- my $remote_pack_address=$session->recv(my $buffer,10,0);
- print $buffer;
- sleep(1);
- }
- }
- my $socket = new IO::Socket::INET (
- LocalHost => '192.168.1.101',
- LocalPort => '2011',
- Proto => 'tcp',
- Listen => 1,
- Reuse => 1,
- ) || die ("无法创建socket:$!\n");
- warn " waiting for connection ..\n";
- while (!$quit){
- next unless my $session = $socket->accept();
- my $ip = $session->peerhost;
- warn "[$ip] incoming! \n";
- my $thread2=Thread->new(\&talk,$session);
- my $thread1=Thread->new(\&receive,$session);
- $thread2->join();
- $thread1->join();
- }
复制代码 A-PC- #! /us/bin/perl -w
- use strict;
- use IO::Socket;
- use Data::Dumper;
- use Thread;
- sub receive{
- my $session=shift;
- while(1){
- print $session "\r".$session->peerhost;# my $answer=<$session>;
- my $buffer;
- my $remote_pack_address=$session->recv($buffer,10,0);
- print $buffer;
- sleep(1);
- }
- }
- sub talk{
- my $session =shift;
- while(1){
- my $line = <STDIN>;
- if($line eq 'quit'){
- print "Bye Bye/n";
- close $session;
- }else{
- print $session ":".$line;
- }
- sleep(1);
- }
- }
- sub host_ip{
- my $socket = shift;
- my $thread1=Thread->new(\&talk,$socket);
- my $thread2=Thread->new(\&receive,$socket);
- $thread1->join();
- $thread2->join();
-
- }
- my $new_socket = IO::Socket::INET->new(Reuse => 1,Proto => 'tcp',PeerAddr => '192.168.1.101' ,PeerPort => '2011')
- or die "$!";
- host_ip($new_socket);
复制代码 |
|