python基于socket底层实现tcp/udp 仅为更好的理解底层如何实现。

2021/11/18 1:39:38

本文主要是介绍python基于socket底层实现tcp/udp 仅为更好的理解底层如何实现。,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

关于tcp

服务器端:

import socket

f1 = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

f1.bind(("127.0.0.1",8080))

f1.listen(5)
while True:
    try: 
        conn,client_addr = f1.accept()
        data = conn.recv(1024)
        print(data.decode('utf-8'))
        conn.send(data.upper())
    except Exception as e:
        break

conn.close()

客户端:
import socket

cl = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
cl.connect(("127.0.0.1",8080))

while True:

    msg = input("我就是要说:").strip()
    if len(msg) == 0:continue
    cl.send(msg.encode('utf-8'))
    data = cl.recv(1024)
    print(data.decode('utf-8'))

cl.close()





udp的实现:
服务端
import socket

f1 = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

f1.bind(("127.0.0.1",8080))
while True:
    res,client_addr = f1.recvfrom(1024)
    print(res.decode('utf-8'))
    f1.sendto(res.upper(),client_addr)

f1.close()

客户端:
import socket

c = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

while True:
    msg = input("这是我要说的话:").strip()
    c.sendto(msg.encode('utf-8'),("127.0.0.1",8080))
    res,server_addr = c.recvfrom(1024)
    print(res.decode('utf-8'))

c.close()


udp 和tcp实现过程种 tcp如果传值为空则会卡住,流式协议,传值为空,服务端收不到则会一直卡着等待 所以在客户端判断了 msg==0的情况 另外异常断开客户端会导致服务端出现bug异常,所以在windows系统下使用try:except 来捕捉异常 使其正常返回
其他方面的不同就是基于原理,,如不需要建立池,客服端也不需要连接端口号,直接发送即可若想要回传,接收方在收记录的时候会记录发送号端口号和ip 回传信息即可


这篇关于python基于socket底层实现tcp/udp 仅为更好的理解底层如何实现。的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程