gpt4 book ai didi

ruby - 在 Ruby 中通过 TCP 发送消息或文件的代码

转载 作者:可可西里 更新时间:2023-11-01 02:45:07 25 4
gpt4 key购买 nike

几天来,我一直在尝试使用 TCP 让两个 ruby​​ 程序在相同或不同的机器上进行通信,但收效甚微。

我正在寻找可以立即运行的示例“客户端”和“服务器”脚本,一旦我选择了可​​用的端口。

我发现的客户端代码似乎可以工作,如下所示。

但我没有服务器可以使用它。

# Seems to work for some reason
require 'socket'

tcp_client=TCPSocket.new('localhost',1540)
while grab_string=tcp_client.gets
puts(grab_string)
end
tcp_client.close

我对能在我的机器上运行的最简单的解决方案感兴趣。

它所要做的就是发送一个字符串。我正在寻找的答案就像 this但使用 ruby​​,而不是 python。

随意更改客户端和服务器的代码,只有一半的拼图我不确定它是否有效。

服务器代码

# Server
require 'socket'

sock = TCPSocket.new('localhost', 1540)
sock.write 'GETHELLO'
puts sock.read(5) # Since the response message has 5 bytes.
sock.close

使用 kennycoc 建议的代码,我收到以下错误消息

Server.rb:3:in `initialize': Only one usage of each socket address (protocol/network address/port) is normally permitted. - bind(2) for nil port 1540 (Errno::EADDRINUSE)
from Server.rb:3:in `new'
from Server.rb:3:in `<main>'

最佳答案

@adjam 你还没有创建 TcpServer, TCPSocket用于创建 TCP/IP 客户端套接字

要创建 TCP/IP 服务器,您必须使用 TCPServer

例如:Tcp/ip 服务器代码:

require 'socket'
server = TCPServer.open(2000)
client = server.accept # Accept client
while (response = client.gets) # read data send by client
print response
end

TCP/IP 客户端代码:

require 'socket'
client = TCPSocket.open('localhost', 2000)
client.puts "hello"
client.close;

关于ruby - 在 Ruby 中通过 TCP 发送消息或文件的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50706987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com