python-socket tcp循环-半连接池-socket udp模板

本文详细介绍了Python中TCP的基础版实现、TCP循环版、TCP异常处理机制,重点讲解了半连接池的概念及其在服务器端和客户端的应用,同时提供了UDP通信的模板代码,供读者实践操作。
摘要由CSDN通过智能技术生成

一、TCP基础版

服务端:

import socket

#买手机 默认得到是一个TCP的socket
server = socket.socket()

#绑定手机卡
server.bind(("127.0.0.1",16888))

#开始待机
server.listen()

# 得到对方的socket对象与地址
client,addr = server.accept()

print('===============')
#buffersize 表示应用程序的缓冲区大小 recv其实是从系统缓冲区读取数据到应用程序
data = client.recv(1024)
print('===============')
print("收到客户端发来的数据:%s" % data.decode("utf-8"))
client.send(data)

client.close()
server.close()

客户端:

import socket
client = socket.socket()
client.connect(('127.0.0.1',16888))
client.send('hello 服务器'.encode('utf-8'))

print('===========================')
data = client.recv(1024)
print('===========================')
print("收到服务器:%s" % data.decode("utf-8"))
client.close()

二、TCP循环版

服务端:

import socket

server = socket.socket()
server.bind(('127.0.0.1',16888))
server.listen()

#连接循环,可以不断接受新连接
while True:
    client,addr = server.accept()
    #通讯循环,可以不断的收发数据
    while True:
        try:
            #如果是windows,对方强行关闭连接,会抛出异常
            #如果是linux,不会抛出异常,会死循环收到空的数据包

            data = client.recv(1024)
            if not data:
                client.close()
                break
            print("收到客户端发来的数据:%s" % data.decode("utf-8"))
            client.send(data)
        except ConnectionResetError:
            print('客户端强行关闭了连接')
            client.close()
            break
client.close()
server.close()

客户端:

import socket

client = socket.socket()
client.connect(('127.0.0.1',16888))
while True:
    msg = input('>>>:')
    client.send(msg.encode('utf-8'))
    data = client.recv(1024)
    print("收到服务器:%s" % data.decode("utf-8"))

client.close(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值