python socket 简单通信

Socket 工作原理和基本概念

Socket 的中文翻译是套接字,它是 TCP /IP网络环境下应用程序与底层通信驱动程序之间运行的开发接口,它可以将应用程序与具体的 TCP /IP隔离开来,使得应用程序不需要了解 TCP /IP的具体细节,就能够实现数据传输。

详细了解可以参考以下:

链接: socket.

服务端参考代码

代码片.

import socket
def serverTask():
    #创建socket
    socket_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#udp,
    #绑定到本地ip和端口
    socket_udp.bind(('127.0.0.1', 60001))
    #循环接收客户端发送的udp报文
    while True:
        try:
            recvdatas, address = socket_udp.recvfrom(128)
            recvmessage = recvdatas.decode("utf-8")
            print("收到来自{}的消息:{}".format(address[0],recvmessage))
            #回复消息给客户端
            backmessage = "【" + recvmessage+"】已经收到!"
            socket_udp.sendto(backmessage.encode("utf-8"),address)
        except Exception as erro:
            print(f"异常:{erro}",)
    socket_udp.close()

if __name__ == "__main__":
    serverTask()

客户端参考代码

import socket
def clientTask():
    # 创建socket
    socket_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#udp,
    while True:
        senddatas= input("请输入发送数据:")
        socket_udp.sendto(senddatas.encode("gb2312"), ('127.0.0.1', 60001))
        #收取服务端的回应
        recvdatas, address = socket_udp.recvfrom(1024)
        print("收到来自{}的消息:{}".format(address[0], recvdatas.decode("utf-8")))
        if senddatas == 'quit':
            break
    #关闭socket
    socket_udp.close()

if __name__ == "__main__":
    clientTask()


效果图

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Python Socket UDP通信是一种基于UDP协议的网络通信方式,它可以实现点对点的数据传输,具有高效、快速、简单等优点。在Python中,我们可以使用socket模块来实现UDP通信,通过创建socket对象、绑定IP地址和端口号、发送和接收数据等操作,实现网络通信。同时,Python Socket UDP通信也可以应用于各种场景,如网络游戏、实时通信、数据采集等。 ### 回答2: Python socket库是Python标准库的一部分,用于实现网络通信。其使用非常简单,主要是调用socket模块下的一些方法即可完成常见网络通信任务。在Python中,UDP通信是基于socket进行实现的。 UDP是一种无连接协议,通信双方之间没有建立可靠的连接。虽然UDP不如TCP那样可靠,但是它的实时性好,适合于需要实时传输数据的场景。UDP的通信方式是通过数据报进行传输,每个数据报最大长度为65,535个字节。 在Python中,通过socket模块创建UDP套接字(socket),然后通过该套接字实现UDP通信。创建UDP套接字的方法为: ``` import socket server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) ``` 其中,`AF_INET`代表IPv4协议,`SOCK_DGRAM`代表使用UDP数据报协议。 接下来,就可以使用该套接字实现UDP通信了。 在进行UDP通信时,需要注意以下几点: 1. 给套接字绑定IP地址和端口号 在Python中,使用`bind()`方法将IP地址和端口号绑定到套接字上,以便可以接收来自这个地址和端口的消息。例如: ``` server_socket.bind(('127.0.0.1', 9999)) ``` 其中,`127.0.0.1`表示本机IP地址,`9999`表示端口号。 2. 发送数据报 通过套接字的`sendto()`方法向指定的IP地址和端口号发送数据报。例如: ``` server_socket.sendto('hello, world!', ('127.0.0.1', 8888)) ``` 其中,`'hello, world!'`表示需要发送的数据,`('127.0.0.1', 8888)`表示目标IP地址和端口号。 3. 接收数据报 通过套接字的`recvfrom()`方法接收来自指定IP地址和端口号的数据报。例如: ``` data, addr = server_socket.recvfrom(1024) ``` 其中,`1024`表示接收数据的缓冲区大小。 4. 关闭套接字 在UDP通信完成后,需要使用`close()`方法关闭套接字。例如: ``` server_socket.close() ``` 以上就是Python socket库进行UDP通信的基本步骤。值得注意的是,在实际的网络通信中可能会遇到各种异常情况,例如网络故障、套接字参数错误等,需要合理的使用异常处理机制,以保证程序的正确性和稳定性。 ### 回答3: Python Socket UDP通信是指使用socket库中的UDP协议进行数据传输的一种通信方式。UDP(User Datagram Protocol,用户数据报协议)是在IP协议的基础上实现的一种无连接的传输层协议。UDP协议提供了无状态的、不可靠的数据传输服务,可以快速传输数据包,但是不能提供可靠的数据传输服务,因此在网络上的应用较少,通常用于需要快速传输而不需要可靠性保证的应用场景。 Python中可以通过使用socket库中的socket类来进行UDP通信。在使用socket进行UDP通信时,需要指定socket的类型为SOCK_DGRAM(表示UDP协议),同时需要指定目标地址和端口号。发送数据时,使用sendto()方法将数据打包发送到指定的目标地址和端口号。接收数据时,使用recvfrom()方法接收数据,并返回发送方的地址和端口号。 下面是一个简单Python Socket UDP通信的示例代码: ```python import socket # 创建UDP socket udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 目标地址和端口号 target_addr = ('127.0.0.1', 8888) # 发送数据 data = 'Hello, UDP!' udp_socket.sendto(data.encode(), target_addr) # 接收数据 recv_data, addr = udp_socket.recvfrom(1024) print('Received from {}: {}'.format(addr, recv_data.decode())) # 关闭socket udp_socket.close() ``` 在这个示例代码中,首先创建了一个UDP socket,指定了目标地址和端口号为127.0.0.1和8888。然后使用sendto()方法将字符串“Hello, UDP!”发送到目标地址和端口号。接着使用recvfrom()方法接收数据,返回发送方的地址和端口号,将接收到的数据打印出来。最后关闭socket。 需要注意的是,在UDP通信中,由于UDP协议的不可靠性,发送方无法确定数据是否被接收方接收到。如果需要可靠的数据传输服务,应该使用TCP协议进行通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.Thaumatin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值