连接到localhost上的Socket

时间:2014-12-04 00:43:13

标签: python sockets localhost raspberry-pi raspbian

我无法在 localhost 上连接到我自己的套接字
s.connect(('127.0.0.1', 4458))(或“localhost”)将永远占据, 最终超时TimeoutError: [Errno 110] Connection timed out

它应该打开端口4458,然后另一个脚本会向它发送一些字符。这两个脚本应该在相同的Raspberry Pi上运行,而'server'将使用sudo(访问GPIO)执行,而不使用,作为聊天机器人。

我在Pi(使用 python 3.4.1 )和笔记本电脑上的客户端(mac,python 3.4.2)上运行服务器没有问题。

它也适用于反向,笔记本电脑上的服务器脚本和Raspberry上的客户端。

作为最终测试,它适用于所述macbook上的服务器和客户端。

Pi上的服务器+客户端无效。

程序冻结

我的缩短代码如果有帮助:

# $ sudo python3 server.py

__author__ = 'luckydonald'
import socket # server
import time # wait for retry
import threading
class Server(threading.Thread):
    port = 4458;
    QUIT = False

     def run(self):
        s = socket.socket()
        failed = True
        print ("Starting Server on Port %d" % (self.port))
        while failed:
            try:
                s.bind(("", self.port))
            except Exception as err:
                print(err)
                print("Port assignment Failed. Retring in 1 second.")
                time.sleep(1)
            else:
                failed = False
                print("Success.")
        while not self.QUIT:
            print("Listening!")
            conn, addr = s.accept() # freezes here
            print("Got something: %s , %s" %(str(conn), str(addr)))
            while not self.QUIT:
                result = conn.recv(1)
                print("Got result: " + str(result))
server = Server();
server.daemon = True
server.run();
# server.start();

对于客户:

# python3 cilent.py
s = socket.socket()
print("connecting...")
s.connect(("localhost",4458)) # also tried "172.0.0.1" # freezes here
print("connected!")
s.sendall("+".encode("utf-8"))
s.sendall("-".encode("utf-8"))
s.close()

这将导致:

Picture of console output

2 个答案:

答案 0 :(得分:2)

我没想到的是localhost / 127.0.0.1没有用。

  

Ping results
  100% package loss

我的hosts文件中有一个格式错误的条目。

答案 1 :(得分:0)

您应该检查以下项目

  1. 有已安装的互联网信息服务
  2. iis正在运行
  3. 防火墙为运行python.exe的端口授予了所需的权限