【发布时间】: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