gpt4 book ai didi

Ruby - 如何使用 Ruby 将文本字符串从 TCP 服务器发送到另一台计算机上的客户端?

转载 作者:可可西里 更新时间:2023-11-01 02:52:00 26 4
gpt4 key购买 nike

几天来我一直在努力学习这个,但没有任何效果。当我写这样的代码时为客户。

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

并为服务器编写这样的代码。

# Set up a server program.
require 'socket'
tcp_server=TCPServer.new(2000)
loop{
waiting_client=tcp_server.accept
path='C:\Users\Nil_Face\Music\Bad Religion - Anxiety.mp3'
test=File.new(path,'rb')
waiting_client.puts(File.basename(path))
test.close
waiting_client.close
}

它工作得很好,但是当我在我的桌面上使用该服务器并尝试让该文本字符串出现在位于另一台计算机上的客户端上时。它不起作用。为什么客户端在不同计算机上时无法连接到服务器?我怎样才能让他们这样做?

最佳答案

您的客户端正在连接到“本地主机”,这是运行客户端的同一台计算机。

tcp_client=TCPSocket.new('localhost',2000)

客户端应该连接到运行服务器的机器的主机名/IP。使用服务器计算机的 IPv4 地址/inet 地址更改“localhost”,在本例中为“192.168.1.10”。

在 window 上:

ipconfig
Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . : local.domain
IPv4 Address. . . . . . . . . . . : 192.168.1.10

在 Linux 上:

# /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr FF:FF:FF:FF:FF:FF
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0

如果连接超时。您可以尝试从命令提示符连接 telnet:

telnet 192.168.1.10 2000

从服务器计算机,您还可以验证服务器是否正在运行并且正在接受与 netstat 的连接:

netstat -an
Active Connections

Proto Local Address Foreign Address State
TCP 0.0.0.0:2000 0.0.0.0:0 LISTENING

如果这些都正确,则您的防火墙可能阻止了连接。

关于Ruby - 如何使用 Ruby 将文本字符串从 TCP 服务器发送到另一台计算机上的客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23795953/

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