繁体   English   中英

errno 111连接被ubuntu vmware中的python拒绝

[英]errno 111 connection refused with python in ubuntu vmware

嗨,我的服务器-客户端连接出现问题,我在Windows 10上编写了2个代码,它们工作得很好。 但是,当我尝试在VM上的ubuntu上执行它们时,出现此错误:

Traceback (most recent call last):
  File "client3.py", line 9, in <module>
    sock.connect(('192.168.1.53', 1234))
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused

服务器代码:

import threading
import SocketServer
import json
import base64

class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):

    def handle(self):

        data = self.request.recv(327680)
        data = json.loads(data)
        cur_thread = threading.current_thread()
        JL= data['Jliste']
        for i in range(0,9) :
            cel = json.loads(JL[i])
            file_name = cel['name']
            img = base64.b64decode(cel['img'])
            with open(file_name,'wb') as _file:
                _file.write(img)
            print "image {} Received ".format(i)
        response = "images Received "
        print response
        self.request.sendall(response)

class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPServer):
    pass


if __name__ == "__main__":



        server = ThreadedTCPServer(("localhost", 1234), ThreadedTCPRequestHandler)


        # Start a thread with the server -- that thread will then start one
        # more thread for each request
        server_thread = threading.Thread(target=server.serve_forever)
        # Exit the server thread when the main thread terminates
        server_thread.daemon = True
        server_thread.start()
        print "Server loop running in thread:", server_thread.name

客户代码:

import socket
import json


sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('localhost', 1234))
try:

    def generate_names(count):
            return 'User.2.{}.jpg'.format(count)
    L = []
    for i in range(0,9):
            name = generate_names(i+1)
            fp = open(name,'rb')
            fp = fp.read()
            fp = fp.encode('base64')
            cel = {}
            cel['name'] = name
            cel['img'] = fp
            jcel = json.dumps(cel)
            L.append(jcel)
    data = {}
    data['Jliste'] = L
    s = json.dumps(data)
    sock.send(s)
    response = sock.recv(1024)
    print "Received: {}".format(response)
finally:
    sock.close()

我得到的新错误是:

Exception happened during processing of request from ('127.0.0.1', 60900)
Traceback (most recent call last):
  File "/usr/lib/python2.7/SocketServer.py", line 596, in process_request_thread
    self.finish_request(request, client_address)
  File "/usr/lib/python2.7/SocketServer.py", line 331, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/usr/lib/python2.7/SocketServer.py", line 652, in __init__
    self.handle()
  File "server.py", line 12, in handle
    data = json.loads(data)
  File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 380, in raw_decode
    obj, end = self.scan_once(s, idx)
ValueError: Unterminated string starting at: line 1 column 16913 (char 16912)

不确定为什么它可以在Windows上运行,但是当我在Ubuntu上运行您的代码时,您的服务器就会退出-就像应该的那样。 它显示“服务器循环正在运行...”,然后退出。 当您的线程设置为server_thread.daemon=True ,该线程也会被杀死。 甚至没有时间初始化套接字。

如果您更改server_thread.daemon=False或添加sleep(600)或类似的内容(您当然会进行无限循环)作为main()中的最后一条语句,它将开始侦听套接字并处理请求-这可能是你想要什么。

暂无
暂无

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

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