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

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 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果