Я думаю, что ваша проблема в IP-адресе: 10.0.2.2
, как указано здесь [ Время ожидания подключения к LocalHost / 10.0.2.2 из эмулятора Android .Вы можете заменить '10.0.2.2'
на 'localhost'
или попытаться найти свой IPv4
адрес.
. Для этого введите ifconfig в командной строке, если вы используете Linux, или введите ipconfig в Windows и найдите * 1009.* address.
Я использовал простой пример клиент-сервер для запуска вашего кода и заменил '10.0.2.2'
на 'localhost'
, и все прошло нормально.
на стороне сервера:
import socket
import struct
import time
TCP_IP = 'localhost'
TCP_PORT = 502
BUFFER_SIZE = 39
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)
sock, addr = s.accept()
print 'Connected by', addr
try:
unitId = 16 # Plug Socket11
functionCode = 3 # Write coil
print("\nSwitching Plug ON...")
coilId = 1
req = struct.pack('12B', 0x00, 0x01, 0x00, 0x00, 0x00, 0x06,
int(unitId), 0x03, 0xff, 0xc0, 0x00,
0x00)
while 1:
sock.send(req)
print("TX: (%s)" % repr(req))
rec = sock.recv(BUFFER_SIZE)
print("RX: (%s)" % repr(rec))
time.sleep(2)
break
print("\nSwitching Plug OFF...")
coilId = 2
req = struct.pack('12B', 0x00, 0x01, 0x00, 0x00, 0x00, 0x06,
int(unitId),
0x03, 0xff, 0xc0, 0x00,
0x00)
while 1:
sock.send(req)
print("TX: (%s)" % repr(req))
rec = sock.recv(BUFFER_SIZE)
print("RX: (%s)" % repr(rec))
time.sleep(2)
break
finally:
sock.close()
на стороне клиента:
import socket
TCP_IP = 'localhost'
TCP_PORT = 502
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((TCP_IP, TCP_PORT))
data = sock.recv(1024)
print repr(data)
while 1:
sock.send(data)
print("send back to server: (%s)" % repr(data))
break
data = sock.recv(1024)
print repr(data)
while 1:
sock.send(data)
print("send back to server: (%s)" % repr(data))
break
sock.close()
убедитесь, что вы запускаете сервер и клиент в отдельных файлах / терминалах