TCP协议和UDP协议的基础框架(python)

加粗 斜体 标题 删除线 无序 有序 待办 引用

TCP协议的基础框架

1、服务端

import socket

# 创建服务端
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定服务器的IP和端口
server.bind(('127.0.0.1', 8848))  # 这个IP在同一台机子上调试用

# 监听
server.listen(5)

# 连接循环 
while True:
    conn, client = server.accept()
# 通信循环
while True:
try:
            data = conn.recv(1024)
print("客户信息:", data.decode("utf-8"))
            msg = input('>>:').strip()
            conn.send(msg.encode("utf-8"))
except ConnectionResetError as err:
break   # 这个报错是对方断开连接后停止循环

# 断开连接        
    conn.close()

# 关闭服务器   
server.close()

2、客户端

import socket

# 创建客户端
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务端
client.connect(('127.0.0.1', 8848))  # 这个IP在同一台机子上调试用

# 通信循环
while True:
    msg = input('>>:').strip()
if not msg:
continue
    phone.send(msg.encode("utf-8"))
    data = client.recv(1024)
print(data.decode("utf-8")

#关闭客户端
client.close()

UDP协议的基础框架

1、服务端

import socket 

server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 8848))

while True:
    data, client_addr = server.recvfrom(1024)  
    print(data)
    server.sendto(data.upper(), client_addr)  

server.close()

2、客户端

import socket
client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
    msg = input('>>:').strip()
    client.sendto(msg.encode(), ('127.0.0.1', 8848)) 
    data, server_addr = client.recvfrom(1024)
    print(data, server_addr)
    
client.close()

TCP协议和UDP协议的区别

1、TCP协议的接收和发送分别是:recv()和send();
UDP协议的接收和发送分别是:recvfrom()和sendto()。

2、TCP协议需要连接循环;UDP协议不需要。

3、TCP协议不能发空消息;UDP协议可以。

4、TCP协议发送数据可靠,不易丢失,出错;UDP协议发送数据不可靠,易丢失。

5、UDP协议在收发数据时,因为之前没有连接服务器,所以要在收发数据的后面加上IP和端口。

6、TCP协议会产生粘包现象;UDP协议不会,一个sendto对应一个recvfrom。
(上面的代码TCP结构存在粘包现象,而且不能并发)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值