繁体   English   中英

Python 客户端无法将数据发送到 Ruby 服务器

[英]Python Client Unable to send data to Ruby Server

我有一些非常简单的 python 和 ruby​​ 代码,旨在允许我将数据包从一些 python 代码发送到 ruby​​ 代码。 我能够更早地完成这项工作,但现在无法重新创建它。 客户端(python 代码)能够连接到服务器,但永远不会超出将永远阻塞的 get 调用。 我没有从 python 端正确发送数据吗?

Ruby 代码(服务器):

require 'socket'
server = TCPServer.open('127.0.0.1', 8211)

# listen for commands to the server
loop {
  serverClient = server.accept
  # i am able to connect
  data_string = serverClient.gets
  # i never reach this point
  print("process data!\n")
}

Python 代码(客户端):

import socket
import json 

socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.connect('127.0.0.1', 8211)

#try to send over a basic dict/json object
obj = {"Key":"Value"}
data = bytes(json.dumps(obj), "utf-8")
socket.send(data) 

阅读 ruby TCPServer文档这个答案,看起来您需要关闭客户端。 试试这个代码,它也可以为多个客户端提供服务:

require 'json'
require 'socket'
server = TCPServer.open('127.0.0.1', 8211)

# listen for commands to the server
loop {
  Thread.start(server.accept) do |client|
    response = client.gets
    data = JSON.parse(response)
    print("process data!\n")
    puts data

    client.close
  end
}

仅供参考:在 ruby​​ 中不鼓励使用驼峰命名法命名变量,请改用 snake_case。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM