Python Socket连接同一网络上的两个设备

时间:2019-03-21 21:12:16

标签: python windows sockets

我正在尝试从同一网络上的两台计算机连接一个简单的服务器和客户端。客户端和服务器都无法彼此“查找”,因为它们不会分别经过.connect().accept()。我在做什么错了?

(Windows 10)

服务器:

import socket

HOST = socket.gethostname()    #Returns: "WASS104983"
#I have also tried socket.gethostbyname(socket.gethostname)), returning: "25.38.252.147"
PORT = 50007

sock = socket.socket()
sock.bind((HOST, PORT))
sock.listen(5)

print("Awaiting connection... ")

(clnt, addr) = sock.accept()

print("Client connected")
…

和客户:

import socket

HOST = "WASS104983"    #Or "25.38.252.147", depending on the servers setup
PORT = 50007

sock = socket.socket()

print("Attempting connection... ")

sock.connect((HOST, PORT))

print("Connected")
…

我以前已经开始使用它了,所以我不确定为什么现在不行了。

我知道这种口径有几个问题,但似乎没有一个能解决我的问题。

而且,wifi扩展器应该不会干扰本地传输吗?

1 个答案:

答案 0 :(得分:0)

我一直看到服务器设置如下:

import socket
import threading

bind_ip = '0.0.0.0'
bind_port = 9999

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bind_ip, bind_port))
server.listen(5)

print("[*] Listening on {}:{}".format(bind_ip, bind_port))


def handle_client(client_socket):
    request = client_socket.recv(1024)
    print('received: {}'.format(request))
    client_socket.send(b'ACK!')
    client_socket.close()


while True:
    client, addr = server.accept()
    print("[*] Accepted connection from: {}:{}".format(addr[0], addr[1]))
    client_handler = threading.Thread(target=handle_client, args=(client,))
    client_handler.start()*

我认为与您的帖子的一个重要区别可能是接受连接的服务器处于无限循环内。你尝试过吗?