X
Xiangrong Fang
Hi,
I had a problem when using Winsock in ruby. I tried various ways, but to
no avail. The situation is that I need to write a simple POP3 client
that pool the pop server. This is normally ok. But currently the PC
installed a version or Norman Virus Control which controls the POP3 port
(it is a proxy).
There is something strange with NVC. The symptom is that if I use my
email client to connect to it, that's fine. If I use windows Telnet, I
only get the "+OK POP3 Server Ready" prompt. After I enter "USER xxx",
or even "QUIT", it does NOT reply anything, just hang there.
I tried using the ruby Socket class and TCPSocket class the result is
same. i.e., it will hang when I use the "recv()" method. Please refer to
the following sample code:
irb(main):001:0> require 'socket'
=> true
irb(main):002:0> t = TCPSocket.new('127.0.0.1', 110)
=> #<TCPSocket:0x2aa0230>
irb(main):006:0> t.recv(100)
=> "+OK POP3 Server Ready\r\n"
irb(main):007:0> t.send('USER [email protected]\r\n', 0)
=> 26
irb(main):008:0> t.recv(100)
^CTerminate batch job (Y/N)? ^C
The irb is frozen and I pressed ^C.
Another piece of code:
irb(main):003:0> t = TCPSocket.new('127.0.0.1', 110)
=> #<TCPSocket:0x2a94098>
irb(main):005:0> t.readline
=> "+OK POP3 Server Ready\r\n"
irb(main):006:0> t.puts('USER [email protected]')
=> nil
irb(main):007:0> t.readline
=> "+OK\r\n"
irb(main):008:0> t.puts('PASS xrfang')
Errno::EINVAL: Invalid argument
from (irb):8:in `write'
from (irb):8:in `puts'
from (irb):8
irb(main):009:0>
I don't know why the first "puts" is ok, while the second generated
Errno::EINVAL exception.
I also tried using Socket, not TCPSocket, but the result is similar.
Thank you very much for any advices.
Shannon
I had a problem when using Winsock in ruby. I tried various ways, but to
no avail. The situation is that I need to write a simple POP3 client
that pool the pop server. This is normally ok. But currently the PC
installed a version or Norman Virus Control which controls the POP3 port
(it is a proxy).
There is something strange with NVC. The symptom is that if I use my
email client to connect to it, that's fine. If I use windows Telnet, I
only get the "+OK POP3 Server Ready" prompt. After I enter "USER xxx",
or even "QUIT", it does NOT reply anything, just hang there.
I tried using the ruby Socket class and TCPSocket class the result is
same. i.e., it will hang when I use the "recv()" method. Please refer to
the following sample code:
irb(main):001:0> require 'socket'
=> true
irb(main):002:0> t = TCPSocket.new('127.0.0.1', 110)
=> #<TCPSocket:0x2aa0230>
irb(main):006:0> t.recv(100)
=> "+OK POP3 Server Ready\r\n"
irb(main):007:0> t.send('USER [email protected]\r\n', 0)
=> 26
irb(main):008:0> t.recv(100)
^CTerminate batch job (Y/N)? ^C
The irb is frozen and I pressed ^C.
Another piece of code:
irb(main):003:0> t = TCPSocket.new('127.0.0.1', 110)
=> #<TCPSocket:0x2a94098>
irb(main):005:0> t.readline
=> "+OK POP3 Server Ready\r\n"
irb(main):006:0> t.puts('USER [email protected]')
=> nil
irb(main):007:0> t.readline
=> "+OK\r\n"
irb(main):008:0> t.puts('PASS xrfang')
Errno::EINVAL: Invalid argument
from (irb):8:in `write'
from (irb):8:in `puts'
from (irb):8
irb(main):009:0>
I don't know why the first "puts" is ok, while the second generated
Errno::EINVAL exception.
I also tried using Socket, not TCPSocket, but the result is similar.
Thank you very much for any advices.
Shannon