首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TCP发送和接收数据包

TCP发送和接收数据包
EN

Stack Overflow用户
提问于 2018-09-06 14:31:59
回答 1查看 1.4K关注 0票数 0

我在准备机器人竞赛。以下是我的任务:

采用无线IEEE 802.11 b/g/n通信标准,通过TCP协议,以单播形式将乘客接送点和落客点传输给机器人。机器人以192.168.1.100:9999连接到侦听服务器。

为了实现这一点,我正在尝试下面的python代码:

代码语言:javascript
复制
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和端口,那就太棒了。通过这种方式,我可以测试我是否收到了。请考虑一下我的任务。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-09-06 15:05:56

在python 3中,简单的tcp接收程序可能如下所示:

代码语言:javascript
复制
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发送方可能如下所示:

代码语言:javascript
复制
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中的不同线程中在同一台计算机上运行接收方和发送方,也可以使用两台计算机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52206450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档