查看完整版本: [-- PC之间Socket连接失败问题,Pls。 --]

Ruby中文社区论坛 -> Ruby 语言 -> PC之间Socket连接失败问题,Pls。 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

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 `
\'

请各位大侠帮忙分析、解决下,谢啦!


查看完整版本: [-- PC之间Socket连接失败问题,Pls。 --] [-- top --]


Powered by phpwind v8.0 Code ©2003-2010 phpwind
Time 0.329805 second(s),query:1 Gzip enabled