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

    文章

    331

    浏览量

    35220
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89600
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    TCPUDP的区别

    首先概括一下基本的区别: TCP是一个面向连接的、可靠的、基于字节流的传输层协议。 而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。 具体来分析,和 U
    发表于 12-09 07:24

    TCP/UDP 三模式!远程监控以太网温湿度传感器,响应快至 1ms

    :支持 TCP Server/Client、UDP 三种工作模式,可灵活对接不同网络架构 ——TCP Server 模式适合中心服
    的头像 发表于 12-04 15:04 587次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b> 三模式!远程监控以太网温湿度传感器,响应快至 1ms

    请问TCPUDP 可以使用同一个端口吗?

    TCPUDP 可以使用同一个端口吗?
    发表于 12-03 08:01

    第五章 W55MH32 UDP示例

    本文介绍了在 W55MH32 芯片上实现 UDP 通信及数据回环测试的方法。阐述了 UDP 协议的概念、特点、应用场景、报文传输流程和报文结构,展示了实现过程,借助网络调试工具完成测试。
    的头像 发表于 07-24 09:13 661次阅读
    第五章 W55MH32 <b class='flag-5'>UDP</b>示例

    第三章 W55MH32 TCP Client示例

    本文介绍在 W55MH32 芯片上实现 TCP 客户端模式进行数据回环测试的方法。阐述 TCP 协议概念、特点、与 UDP 区别、应用场景及相关机制。展示实现过程,包括开启 Keepalive 功能,在主循环运行测试程序。烧录例
    的头像 发表于 07-24 09:06 775次阅读
    第三章 W55MH32 <b class='flag-5'>TCP</b> Client示例

    什么是Modbus TCP协议

    Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,用于在客户机和服务器之间进行数据通信。它常用于工业自动化控制、电力监控与管理、温湿度监测等领域。Modbus TCP协议使用标准
    的头像 发表于 07-23 17:18 3329次阅读
    什么是Modbus <b class='flag-5'>TCP</b>协议

    TCP攻击是什么?有什么防护方式?

    随着网络的高速发展,越来越多的企业都将业务部署在线下机房或者云上。随之而来的就是各种各样的网络攻击,如DDoS攻击、CC攻击、TCP攻击等,这些攻击对业务的影响也是很大。市面上有很多安全厂商都有研发
    的头像 发表于 06-12 17:33 747次阅读

    开源直接用!UDP-UART数据透传来了

    今天就来分享一下UDP-UART透传示例,源码开放,可根据实际需求灵活应用。 一、UDP-UART透传简介 UDP-UART透传是一种将UDP数据流直接传输到UART接口的通信方式。它
    的头像 发表于 02-05 17:14 572次阅读
    开源直接用!<b class='flag-5'>UDP</b>-UART数据透传来了

    如何优化TCP协议的性能

    优化TCP协议的性能可以从多个方面入手,以下是一些关键的策略和方法: 一、调整TCP参数 TCP窗口大小 : 重要性 :TCP窗口大小是衡量TCP
    的头像 发表于 01-22 09:52 1480次阅读

    TCP协议的安全性分析

    1. TCP协议的基本特性 TCP协议的主要目的是确保数据的可靠传输。它通过以下机制实现这一目标: 数据分段和重组 :TCP将数据分割成较小的段,并在接收端重新组装这些段。 确认和重传 :TC
    的头像 发表于 01-22 09:48 1248次阅读

    TCP协议与UDP协议的区别

    UDP(用户数据报协议) : 无连接 :UDP不建立连接,数据可以直接发送,不需要任何握手过程。 不可靠性 :UDP不保证数据的可靠传输,数据包可能会丢失,不会重传。 2. 数据传输 TC
    的头像 发表于 01-22 09:44 1764次阅读

    适用于MySQL和MariaDB的Python连接器:可靠的MySQL数据连接器和数据库

    和 Linux 的 wheel 包分发。 直接连接 该解决方案使您能够通过 TCP/IP 建立与 MySQL 或者 MariaDB 数据库服务器的直接连接,而无需数据库客户端库。另外直接连接可以提高 Python 应用程
    的头像 发表于 01-17 12:18 848次阅读
    适用于MySQL和MariaDB的<b class='flag-5'>Python</b>连接器:可靠的MySQL数据连接器和数据库

    Web端TCP/UDP测试工具!小白必学~

    Web端TCP/UDP测试工具,方便大家进行各种基于TCP和TDP的模拟测试。该测试工具不仅支持TCPUDP测试,还支持SSL,使用极为便
    的头像 发表于 01-08 18:17 1994次阅读
    Web端<b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>测试工具!小白必学~

    TCP三次握手与UDP的区别

    在计算机网络中,数据传输的可靠性和效率是两个关键因素。为了满足不同的应用需求,设计者们开发了多种传输层协议。其中,TCP(传输控制协议)和UDP(用户数据报协议)是最常用的两种。它们在数据传输机制
    的头像 发表于 01-03 17:35 1222次阅读

    一文了解Android UDP通信

    协议。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。 首部开销小: UDP的首部开销只有8个字节,比
    发表于 12-30 10:56