| garygao |
2010-07-26 12:29 |
PC之间Socket连接失败问题,Pls。
代码如下:
---------------------------------------------
Server端:
---------------------------------------------
require \'socket\'
include Socket::Constants
SERVER_LISTEN_PORT = 1039
SERVER_HOST_NAME = \'localhost\'
SERVER_MAX_LISTEN_CNT = 10
socket = Socket.new(AF_INET, SOCK_STREAM, 0)
sockaddr = Socket.sockaddr_in(SERVER_LISTEN_PORT, SERVER_HOST_NAME)
socket.bind(sockaddr)
socket.listen(SERVER_MAX_LISTEN_CNT)
print(\"------waiting for connection!\\n\")
begin
client_socket, client_sockaddr = socket.accept_nonblock
rescue Errno::EAGAIN, Errno::EWOULDBLOCK, Errno::ECONNABORTED, Errno::EPROTO, Errno::EINTR
IO.select([socket])
retry
end
puts(client_socket.readline.strip)
client_socket.close
socket.close
---------------------------------------------
Client端
---------------------------------------------
require \'socket\'
include Socket::Constants
SERVER_HOST_NAME = \'server\' #\'localhost\'
SERVER_HOST_PORT = 1039
socket = Socket.new(AF_INET, SOCK_STREAM, 0)
address = IPSocket.getaddress(SERVER_HOST_NAME)
print(\"------server address \\\"#{address}\\\"\\n\")
sockaddr = Socket.sockaddr_in(SERVER_HOST_PORT, address)
socket.connect(sockaddr)
socket.puts(\'send from client\')
socket.close
说明:启动服务端,监听1039端口,等待客户端连接并打印客户端收到的字符串(\'send from client\')。
客户端则发起连接(服务端机器名称\'server\',可以根据实际情况进行调整)。
问题:在同一台PC上操作结果正常,即server-client工作正常,但在不同机器之间操作时,总是出现连接失败问题(服务端防火墙也关闭了依然如此),如下为客户端错误信息:
------server address \"192.168.0.110\"
test_client.rb:11:in `connect\': 由于连接方在一段时间后没有正确答复或连接的主机没
有反应,连接尝试失败。 - connect(2) (Errno::ETIMEDOUT)
from test_client.rb:11:in `\'
请各位大侠帮忙分析、解决下,谢啦! |
|