我正在为机器人比赛做准备。这是我的任务:
乘客的上落点被传送到机器人 使用无线IEEE 802.11 b /通过TCP协议进行单播形式 g / n通讯标准。机器人连接到聆听者 服务器位于192.168.1.100:9999。
要意识到这一点,我正在尝试以下python代码:
import socket
TCP_IP = '192.168.1.100'
TCP_PORT = 9999
BUFFER_SIZE = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
data = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data
问题是,我不确定该代码是否是正确的路径(接收数据包),并且无法进行测试。
真想知道是否有 TCP数据包发件人 特定IP和端口。通过这种方式,我可以测试我是否正在接收。请考虑考虑我的任务。
谢谢!
答案 0 :(得分:0)
简单的tcp接收器在python 3中可能看起来像这样:
import socket
def receiver_tcp(tcp_ip, tcp_port, echo=True, buffer_size=4096):
with socket.socket(
socket.AF_INET, # Internet
socket.SOCK_STREAM # TCP
) as sock:
sock.bind((tcp_ip, tcp_port))
# listening forever
while True:
sock.listen()
conn, addr = sock.accept()
answer = ''
# getting and decoding message
while True:
answer_part = conn.recv(buffer_size).decode('UTF-8')
if not answer_part:
conn.close()
break
answer += answer_part
# logging to console
if echo:
print(answer)
简单的tcp发送者可能看起来像这样:
import socket
def sender_tcp(message, tcp_ip, tcp_port):
with socket.socket(
socket.AF_INET, # Internet
socket.SOCK_STREAM # TCP
) as sock:
sock.connect((tcp_ip, tcp_port))
sock.send(message.encode('UTF-8'))
您可以在同一台计算机上以python中的不同线程运行接收方和发送方,或者使用两台计算机。