Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将JS客户端与Python服务器连接_Javascript_Python_Node.js_Sockets_Socket.io - Fatal编程技术网

Javascript 将JS客户端与Python服务器连接

Javascript 将JS客户端与Python服务器连接,javascript,python,node.js,sockets,socket.io,Javascript,Python,Node.js,Sockets,Socket.io,我对JS和Python比较陌生,所以这可能是一个初学者的问题。我试图将一个字符串从JS客户端发送到Python服务器(然后将该字符串发送到另一个Python客户端) 这是我的代码: JS客户端: var socket = io.connect('http://127.0.0.1:8484'); socket.send('lalala'); Python服务器: HOST = '127.0.0.1' PORT = 8484 s = socket.socket(socket.AF_

我对JS和Python比较陌生,所以这可能是一个初学者的问题。我试图将一个字符串从JS客户端发送到Python服务器(然后将该字符串发送到另一个Python客户端)

这是我的代码:

JS客户端:

    var socket = io.connect('http://127.0.0.1:8484');
    socket.send('lalala');
Python服务器:

HOST = '127.0.0.1'
PORT = 8484
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(2)

#JS
conn1, addr1 = s.accept()
print 'Connected by', addr1
#PY
conn2, addr2 = s.accept()
print 'Connected by', addr2

while 1:
    try:
        data = conn1.recv(1024)
    except socket.error:
        print ''
    if data:
        print data.decode('utf-8')
        conn2.send('data')
Python客户端:

def __init__(self): #inicializacion
    self.comando = '0'
    self.HOST = '127.0.0.1'
    self.PORT = 8484
    self.cliente = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    fcntl.fcntl(self.cliente, fcntl.F_SETFL, os.O_NONBLOCK)

def activate(self): 
    print "Plugin de envio en marcha."

def deactivate(self):
    print "Plugin de envio off."

def __call__(self, sample):
    self.cliente.connect((self.HOST, self.PORT))
    try:
        self.comando = self.cliente.recv(1024).decode('utf-8')

    except socket.error, e:
        self.comando = '0'

    print "******************"
    print self.comando
    print "******************"
我可以将一个随机字符串从python服务器发送到python客户端,但是我无法从JS客户端接收

运行服务器和客户端时,连接没有问题:

Connected by ('127.0.0.1', 52602)
Connected by ('127.0.0.1', 52603)
但是,例如,这是我从JS收到的:

GET /socket.io/1/?t=1472322502274 HTTP/1.1
Host: 127.0.0.1:8484
Connection: keep-alive
Origin: http://127.0.0.1:8880
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
Accept: */*
Referer: http://127.0.0.1:8880/normal.html
Accept-Encoding: gzip, deflate, sdch
Accept-Language: es-ES,es;q=0.8
Cookie: io=e7675566ceab4aa1991d55cd72c8075c
但是我想要字符串“拉拉”

有什么想法吗

(谢谢!)

socket.socket()
不会创建websocket服务器

您应该使用websocket服务器,请检查以下内容:


此外,您的python客户端也应该使用
websockets
,即使您仍然可以使用原始套接字发送数据。

如果您希望连接到python TCP服务器,则可以在节点中使用类似于以下代码的代码:

var net = require('net');

var client = new net.Socket();
client.connect(8484, '127.0.0.1', function() {
    console.log('Connected');
    client.write('Hello, server! Love, Client.');
});

client.on('data', function(data) {
    console.log('Received: ' + data);
    client.destroy(); // kill client after server's response
});

由python代码启动的服务器不侦听原始TCP连接。如果你仔细阅读,你就会明白为什么在js代码发送这些字符串时会看到这些字符串

谢谢大家!!但我现在遇到了这个问题:required.js:417未捕获错误:尚未为context:\加载模块名“net”。使用require([])。我试图解决它,但如果我使用:require(['net'],function(net){});我有:required.js:2417 GET 500(内部服务器错误)VM1275:1未捕获语法错误:意外标识符和:required.js:417未捕获错误:模块加载超时:net有什么想法吗?@DidiNa你是在浏览器中这样做的吗?是的,我有一个web应用程序,用户在其中编写字符串,然后:html->js->node.js->python Server->python client。我现在的问题是将字符串从js发送到node.js。浏览器中的
js
将通过哪个协议与运行
node.js
的服务器联系?我不确定,但是Socket.IO使用WebSocket协议。