python - errno 111 在 ubuntu vmware 中使用 python 连接被拒绝

标签 python sockets ubuntu

您好,我的服务器-客户端连接出现问题 我在 Windows 10 上编写了 2 个代码,它们运行得很好。但是当我尝试在虚拟机中的 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() 中,它开始监听套接字并处理请求 - 这可能就是您想要的。

关于python - errno 111 在 ubuntu vmware 中使用 python 连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279373/

相关文章:

python - 序列化 Python 类中的 @property 方法

python - "KeyError: '(插入 IP )'"是什么意思?

sockets - Hololens UDP服务器从不接收消息

ruby-on-rails - Secrets.yml 与 ENV 变量与选项?

linux - 无法在 Ubuntu 上找到 tomcat 进程的端口号

python - 我应该使用 Python casefold 吗?

python - 生成正确的excel xls格式

python - BeautifulSoup-Python : How do you scrape data that has not been loaded yet?

.net - .net 中的异步套接字是无线程的吗?

java - Android FileOutputStream 似乎失败