【发布时间】:2013-12-04 14:36:12
【问题描述】:
我正在尝试为聊天应用程序做一个多线程客户端。有 2 个线程:键盘读取(从键盘读取输入并通过套接字发送)和服务器读取(从服务器读取行并将它们打印到屏幕上)。所以,这就是我创建键盘阅读器的方法:
my $threadKeyboard = threads->create(\&readKeyboard, $socket);
$threadKeyboard->join();
sub readKeyboard {
my $socket = @_;
my $keydata;
do{
$keydata=<STDIN>;
print $socket "$keydata\n";
} while($data ne "bye\n");
}
但是,当我尝试运行它时,我得到了这个:
Thread 1 terminated abnormally: Can't use string ("1") as a symbol ref
while "strict refs" in use at client.pl line 41, <STDIN> line 1.
第 41 行是:
$keydata = <stdin>;
我想问题是我没有正确地为函数提供套接字,但我不知道如何解决它:(有什么建议吗?提前谢谢!
【问题讨论】:
标签: multithreading perl sockets symbols ref