socket模块实现socket协议

本文介绍了Python内置的socket模块如何实现UDP和TCP协议的网络传输,包括多个示例,如UDP的多人通信、TCP的普通会话和文件传输。此外,还详细讨论了TCP协议中的粘包问题及其解决方案。
摘要由CSDN通过智能技术生成

python内置模块socket模块可解决基于tcp和ucp协议的网络传输

一:基于udp协议进行网络传输

例1 :

server端:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)  # 声明udp协议
sk.bind(('127.0.0.1', 9090))   # udp和tcp都是绑定自己的ip地址和端口号。udp没有listen和接收对方的地址。谁都可以给我发,只要在线就接。

while True:
    msg, addr = sk.recvfrom(1024)  # 收信息,最多1024个字节   # 服务端一定要先收到客户端的地址,因为他如果不知道地址也不知道发给谁
    print(addr)  # ('127.0.0.1', 63045)  发给我信息的ip地址和对方的端口
    print(msg.decode('utf-8'))   # 从物理层发过来的都是byte类型
    msg_send = input('>>>')
    sk.sendto(msg_send.encode('utf-8'), addr)  # 发信息

sk.close()

client端

import socket
sk = socket.socket(type = socket.SOCK_DGRAM)
while True:
    msg_send = input('>>>')
    sk.sendto(msg_send.encode('utf-8'),('127.0.0.1',9090))
    msg,addr = sk.recvfrom(1024)
    print(msg.decode('utf-8'))
    print('server addr :',addr)  # server addr : ('127.0.0.1', 9090) 服务端的地址

sk.close()

运行结果

>>>吃了吗
吃了
>>>天气怎么样
挺好的
>>>听说明天有台风,做好防范的准备哦
好的
>>>

在这里插入图片描述

例2:多人同时向服务器发消息:

服务器端:

import socket

sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1', 9847))  # 一旦绑定一个地址就是服务器

friends = {
   'wendy':'\033[1;32;40mwendy : %s\033[0m', 'laura':'\033[1;33;44mlaura : %s\033[0m'}
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值