0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

python修炼——UDP、TCP

电子设计 来源:电子设计 作者:电子设计 2020-12-25 18:00 次阅读

今日思维导图

每日代码

udp聊天器

import socket

"""

这段代码可以实现循环进行收发消息,但是同一时间只能进行一个动作

"""

def send_msg(udp_socket):

"""发送数据"""

# 发送数据

client_ip = input("请输入对方ip: ")

client_port = int(input("请输入对方端口:"))

send_data = input("请输入要发送的内容:")

# 发送数据,使用encode进行编码,ip和端口要放在元组中

udp_socket.sendto(send_data.encode("utf-8"), (client_ip, client_port))

def recv_msg(udp_socket):

"""接收数据"""

# 接收数据 ,需要指定要接收的字节,1024就是 1KB

recv_data = udp_socket.recvfrom(1024)

# recvfrom返回的数据时一个元组,第一个元素是地址,第二个元素是接收到的消息

# 使用decode 进行解码

print("%s: %s" % (str(recv_data[1]), recv_data[0].decode("utf-8")))

def main():

# 创建套接字

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM

# 绑定本地信息,可以知道ip和端口

udp_socket.bind(("", 6666))

while True:

print("---udp聊天器---")

print("1. 发送数据")

print("2. 接收数据")

print("0. 退出")

op = input("请输入要进行的操作")

if op == "1":

# 调用发送数据的函数

send_msg(udp_socket)

elif op == "2":

# 调用接收数据的函数

recv_msg(udp_socket)

elif op == "0":

break

else:

print("输入有误,请重新输入")

udp_socket.close()

if __name__ == "__main__":

main()

tcp服务器代码

import socket

"""tcp服务器"""

def main():

# 创建套接字, tcp的参数时SOCK_STREAM

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定本地地址, 本地地址和端口可能需要重新指定

tcp_socket.bind(("", 6666))

# 由主动变成被动接听, listen方法可以指定同时连接的客户端

tcp_socket.listen(128)

while True:

# 循环接听客户

# 等待客户端连接, 当有客户连接,accept方法返回一个元组

# 元组第一个元素是一个新的套接字,只针对于当前连接的这个客户端;第二个元素是客户端地址

colient_socket, colient_addr = tcp_socket.accept()

# 接收数据

print(colient_addr)

while True:

# 循环和同一个客户端联系

colient_data = colient_socket.recv(1024)

print(colient_data.decode("utf-8"))

if colient_data:

# 进行判断,只有客户端还在发送数据,就返回一个数据给客户端

# 发挥一部分数据给客户端

colient_socket.send("嘿嘿嘿".encode("utf-8"))

else:

# 没有数据就

break

# 关闭套接字

colient_socket.close()

tcp_socket.close()

if __name__ == "__main__":

main()

tcp客户端代码

import socket

"""tcp客户端"""

def main():

# 创建套接字

tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 链接服务器, tcp客户端需要先链接服务器

tcp_socket.connect(("192.168.xxx.xxx", 6666))

while True:

# 循环和服务器联系

# 发送数据

print("输入【exit】退出链接")

send_data = input("请输入要发送的数据:")

if send_data == "exit":

break

tcp_socket.send(send_data.encode("utf-8"))

# 接收服务器返回的数据

server_data = tcp_socket.recv(1024)

print(server_data.decode("utf-8"))

# 关闭套接字

tcp_socket.close()

if __name__ == "__main__":

main()

在 tcp 这里碰见了一个奇怪的BUG

服务器和客户端运行起来后,输入正常数据没有问题,当只输入一个回车时,程序不发送数据也不接受数据只能强行接受,问了下,没有解决,这玩意好像是因为操作系统底层的原因, 后面再研究研究。

今天内容需要记忆和理解都比较多,不过还算可以接受。

最近在试着使用 Typora 练习 Markdown 写作方式,不是很熟练,写出来有点乱,慢慢练习熟练了再使用这种方式吧。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UDP
    UDP
    +关注

    关注

    0

    文章

    322

    浏览量

    33875
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84449
收藏 人收藏

    评论

    相关推荐

    TCP&UDP调试工具

    TCP&UDP调试工具
    发表于 10-30 10:41 1次下载

    功能强大的网络通讯工具,支持各类TCPUDP、HTTP的通讯协议

    功能强大的网络通讯工具,支持各类TCPUDP、HTTP的通讯协议,简单方便,包含历史记忆功能,体积小,服务器调试最合适
    发表于 09-05 11:51 0次下载

    深度解析TCPUDP协议

    计算机与网络设备要相互通信,它们必须遵循一种共同的方法或标准。对于不同硬件平台和操作系统之间的交互而言,这种共同遵循的规范尤为关键。我们将这一系列指导通信过程的规则称为“协议”。TCPUDP
    的头像 发表于 09-02 14:53 331次阅读
    深度解析<b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>协议

    tcpudp的区别和联系

    一、引言 在现代网络通信中,数据传输是至关重要的。为了确保数据的可靠传输,网络协议发挥着关键作用。传输控制协议(TCP)和用户数据报协议(UDP)是两种常用的网络协议,它们在许多应用场景中发
    的头像 发表于 08-16 11:06 527次阅读

    使用sep_now的同时能不能使用TCPUDP连接?

    在使用sep_now的同时能不能使用TCPUDP连接
    发表于 07-22 06:10

    请问esp8266 rtos sdk能否同时启动tcp socke clent和udp server?

    我在用的是V1.5的rtos 的sdk,想在esp8266上同时启动tcp的socket client和udp的socket server。 但是我发现,只要我一启动upd server,tcp
    发表于 07-12 07:07

    请问ESP32 S3既能TCP通信同时也能UDP通信吗?

    有一个应用需求,即想通过TCP这种保证到达的方式传输指令,又想通过UDP这种方式做图传,不知道ESP32 S3模组或者Espressif 有没有合适的模组同时支持TCPUDP
    发表于 06-07 07:17

    udp是什么协议?udp协议介绍

    要求不高,但对时延和带宽有要求的应用场景。 UDP协议的主要特点包括: 1. 无连接:UDP不需要建立连接,可以直接发送数据。 2. 轻量级:UDP没有TCP那么复杂的控制机制,头部信
    的头像 发表于 04-19 15:57 1258次阅读

    通信必备知识!TCPUDP协议介绍及使用

    TCPUDP是两个最常用的通讯协议。TCP是面向连接的协议,需要在收发数据前与对方建立可靠的连接,建立连接的过程为3次握手,断开连接的过程为4次挥手,确保数据传输的可靠性。UDP是一
    的头像 发表于 03-15 08:19 1735次阅读
    通信必备知识!<b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>协议介绍及使用

    能不能说一说TCPUDP的区别?

    能不能说一说TCPUDP的区别? TCP(传输控制协议)和UDP(用户数据报协议)是互联网传输层协议的两种常见形式。它们在数据传输、连接管理和可靠性等方面存在一些显著差异。本文将详细
    的头像 发表于 02-04 11:03 488次阅读

    udp是什么意思 简述TCPUDP的区别和联系

    UDP (User Datagram Protocol) 是一种在计算机网络中使用的传输层协议。它与TCP (Transmission Control Protocol) 一样,都是在因特网协议套件
    的头像 发表于 02-02 16:33 1225次阅读

    TCPUDP协议有什么区别?如何通过网关实现TCP协议通信?

    四次握手就是指断开的过程。而UDP可以立即传输数据,并不需要建立三次握手连接。两者相比,TCP就像是挂了专家号,可以保证及时看病;而UDP就像是挂了普通门诊,需要排队才能看病。 另一方面,TC
    的头像 发表于 01-24 11:07 569次阅读
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b>协议有什么区别?如何通过网关实现<b class='flag-5'>TCP</b>协议通信?

    UDPTCP的主要区别 UDP能否像TCP一样实现可靠传输?

    UDPTCP的主要区别 UDP能否像TCP一样实现可靠传输?TCP如何实现可靠性传输? UDP
    的头像 发表于 01-22 16:10 755次阅读

    如何选择传输层协议?TCPUDP的优缺点和适用场合

    如何选择传输层协议?TCPUDP的优缺点和适用场合  传输层协议是计算机网络中的重要组成部分,它负责在主机之间传输数据。常见的传输层协议有TCPUDP。选择合适的传输层协议对于网络
    的头像 发表于 12-11 11:42 951次阅读

    tcp/ip协议包含哪几层?tcpudp有什么区别?

    tcp/ip协议包含哪几层?tcpudp有什么区别? TCP/IP协议是一种网络通信协议,包含四个层次,分别是网络接口层、网络层、传输层和应用层。 1. 网络接口层:该层是
    的头像 发表于 11-29 17:40 1071次阅读