yakczh888 2012-11-13 22:21
浏览 463
已采纳

ruby的TCPSocket用read/write不能通信,用gets/puts就可以

server
[code="java"]

require 'socket'

server = TCPServer.open('127.0.0.1',2000)

client = server.accept

loop {

str=client.read
puts str
client.write(str)

}
client.close

[/code]

client
[code="java"]

require 'socket'

host = '127.0.0.1'
port = 2000
msg="\0x48\0x0a\0x0d"
s = TCPSocket.open(host, port)
s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1)
loop do
send = s.write(msg)
s.flush
puts msg
resp = s.read
puts resp
sleep 1
end

[/code]
按照这上面说的
http://stackoverflow.com/questions/1147852/ruby-tcpsocket-write-doesnt-work-but-puts-does
加上s.setsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY, 1) 和flush 也不管用

  • 写回答

1条回答 默认 最新

  • sevk 2012-11-16 11:06
    关注

    client.read 改成 recv(65535) 就OK了。

    socket的read和recv函数的区别: http://www.cnblogs.com/heiyue/archive/2011/08/03/2126622.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退