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 回传信息即可
上一篇:as实现简单微信界面切换


下一篇:ABAP 查找SAP Parameter ID的方法