【问题标题】:Local socket connection between a Python program and JSPython程序和JS之间的本地套接字连接
【发布时间】:2018-05-29 17:00:02
【问题描述】:

我正在尝试在 Python(客户端)和 JavaScript(服务器)之间建立套接字连接,但我有点困惑如何去做。

在 javascript 的服务器端我有这个代码:

JS 服务器

var net = require('net');

var server = net.createServer(function(socket){
        socket.write('Echo server\r\n');
        socket.pipe(socket);
});

server.listen(1337, '127.0.0.1');

对于 Python 上的客户端,我有这个

Python 客户端

import socket

class JavaSocket:

def __init__(self):
    self.client_socket = None
    self.portNumber = 1337

def socketMethod(self):
    """ This method will establish the socket Connection between Java and Python """
    try:
        self.client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.client_socket.connect(("localhost",self.portNumber))
        print(self.portNumber)
    except Exception as e:
        raise

def socketConnection(self):

    sentence = "Test"
    self.client_socket.send(sentence.encode())
    data = self.client_socket.recv(1024)
    print(data)
    if data is not None:
        print("Socket closed")
    self.client_socket.close()


js = JavaSocket()
js.socketMethod()
js.socketConnection()

我对 JS 和套接字连接不是很熟悉。我尝试在 Python 中运行它,但出现错误,表明连接被拒绝。

【问题讨论】:

  • 你为什么用管道将插座连接到插座? socket.pipe(socket); 并且一旦创建了套接字,您就可以使用 socket.on('data', callback) 监听数据
  • 我不知道。我从gist.github.com/tedmiston/5935757 得到了 JS 代码。我有同样的问题,但它似乎对其他人有用
  • 啊! socket.pipe(socket); 是将收到的内容发回给客户端,以供测试。
  • node.js 代码按预期工作,在 Linux 上使用telnet 127.0.0.1 1337 进行了测试。所以你可以检查端口是否没有防火墙或客户端不可用
  • 太棒了!谢谢你的帮助。我还需要socket.on('data', callback)吗?

标签: javascript sockets


【解决方案1】:

我为我工作的客户端服务器端的代码是

var net = require('net');
var server = net.createServer(function(socket){
    socket.write('Echo server\r\n');
    socket.pipe(socket);
    socket.on('data', function(buffer)
        {
             console.log(buffer.toString());
         }
    });

server.listen(1337, '127.0.0.1');

这将连接到客户端并发送“Echo server”消息并从客户端打印消息“Test”

【讨论】:

    猜你喜欢
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    相关资源
    最近更新 更多