- 论坛徽章:
- 0
|
有下面两段Perl代码和两段Ruby代码:
Code A: 【Perl TCP Server】
- prompt> perl -e '
- use IO::Socket;
- $s = IO::Socket::INET->new(LocalPort => 8080, Type => SOCK_STREAM, Reuse => 1, Listen => 10, Proto => "tcp") or die "$!";
- while ($c = $s->accept) {
- print while <$c>;
- }'
复制代码 Code B:【Perl TCP Client】
- prompt> perl -e '
- use IO::Socket;
- $c = IO::Socket::INET->new(PeerAddr => "localhost:8080") or die "$!";
- while (<>) {
- print $c $_
- }'
复制代码 Code C:【Ruby TCP Server】
- prompt> ruby -e '
- require "socket"
- s = TCPServer.new("localhost", 8080)
- while( c = s.accept)
- while l = c.gets
- puts l
- end
- end'
复制代码 Code D:【Ruby TCP Client】
- prompt> ruby -e '
- require "socket"
- c = TCPSocket.new("localhost", 8080)
- while l = gets
- c.puts l
- end'
复制代码 有以下一些问题,我感觉很困惑,哪位大虾能帮忙解释一下
1. Code A和Code C能同时运行,按理说都绑在TCP8080端口上,后启动一个程序应该抛出Address already be used之类的信息才对啊
2. 可以同时运行两个Code C实例,但不能同时运行两个Code A实例
3. Code A和Code C同时运行时,使用Google Chrome浏览器访问http://localhost:8080/,只有Code C实例能打印出HTTP message,而Code A和Code C分别单独运行时, 都能打印出HTTP Message
4. Code C单独运行时,Code B无法连接到Code C实例
5. Code A单独运行时,Code D可以连接到Code A实例
6. Code A和Code C同时运行时,Code B连接到Code A实例,而Code D连接到Code C实例。 |
|