我试图在 TCP Client 和 W5500 之间建立连接。
这是我的代码。
socket.set_interface(eth)
server = socket.socket() # Allocate socket for the server
server_ip = None # IP address of server
server_port = 50007 # Port to listen on
server.bind((server_ip, server_port)) # Bind to IP and Port
server.listen() # Begin listening for incoming clients
conn, addr = server.accept() # Wait for a connection from a client.
print("socket connected")
while True:
eth.maintain_dhcp_lease()
led.value = not led.value
time.sleep(1)
with conn:
# data = conn.recv()
# print(data)
# conn.send(data) # Echo message back to client
while True:
data = conn.recv(10)
if data:
print(data)
conn.send(data) # Echo message back to client
break
我试图从 TCP 客户端应用程序建立连接。尽管我已经建立了连接,就像该图中的“套接字已连接”一样,但 data = conn.recv(10) 出现了问题。怎么解决呢?我的网络有问题吗?
conn.send() 就可以了。但我发现如果 conn.recv() 运行,会发生以下情况。
Wiznet5k SimpleServer Test (no DHCP)
Ethernet link is down…
Chip Version: w5500
MAC Address: ['0xde', '0xad', '0xbe', '0xef', '0xfe', '0xed']
My IP address is: 192.168.1.8
*** Get socket.
Reserved sockets: [False, False, False, False, False, False, False]
Allocated socket # 1.
* Listening on port=50007, ip=192.168.1.8
*** Opening socket 1
* Opening W5k Socket, protocol=33
*** Get socket.
Allocated socket # 0
Dest is (192.168.1.11, 46396), Next listen socknum is #0
*** Get socket.
Reserved sockets: [True, False, False, False, False, False, False]
Allocated socket # 2.
* Listening on port=50007, ip=192.168.1.8
*** Opening socket 2
* Opening W5k Socket, protocol=33
socket connected
socket_available called on socket 1, protocol 33
*** Disconnecting socket 1
*** Closing socket 1
Waiting for socket to close…
Socket has closed.
Traceback (most recent call last):
File "<stdin>", line 78, in <module>
File "adafruit_wiznet5k/adafruit_wiznet5k_socket.py", line 276, in wrapper
File "adafruit_wiznet5k/adafruit_wiznet5k_socket.py", line 499, in recv
File "adafruit_wiznet5k/adafruit_wiznet5k_socket.py", line 276, in wrapper
File "adafruit_wiznet5k/adafruit_wiznet5k_socket.py", line 598, in recv_into
TypeError: unsupported types for __gt__: 'NoneType', 'int'
我根本没发信息,就这样自动断线了
我已经解决了这个问题。 您需要在运行
conn.settimeout()
之前添加 conn.recv()
。