关于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 回传信息即可