Python基于socket实现的TCP服务端
生活随笔
收集整理的這篇文章主要介紹了
Python基于socket实现的TCP服务端
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
'''
基于socket實(shí)現(xiàn)的TCP服務(wù)端
'''import socket
# 建立socket對(duì)象
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 如果服務(wù)器是一次性的,如果服務(wù)器結(jié)束后馬上重新啟動(dòng)會(huì)出現(xiàn)一個(gè)錯(cuò)誤,原因是地址和端口沒(méi)有被釋放
# OSError: [Errno 48] Address already in use
# 如果想馬上釋放,要設(shè)置一下socket選項(xiàng)
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
# 綁定IP和端口,如果在綁定IP時(shí)沒(méi)有給定IP,默認(rèn)是綁定本地IP
server_socket.bind(('',7777))
# 設(shè)置監(jiān)聽(tīng)(最大監(jiān)聽(tīng)數(shù)),設(shè)置完后服務(wù)端會(huì)進(jìn)入被動(dòng)模式,不能主動(dòng)連接客戶端,只能被動(dòng)地等待客戶端的連接
server_socket.listen(128)
# 等待客戶端連接,連接上后,函數(shù)會(huì)返回客戶端的Socket對(duì)象和地址信息
client_socket,ip_port=server_socket.accept()
print(f'客戶端{(lán)ip_port[0]}使用端口{ip_port[1]}連接成功...')
# 接收客戶端數(shù)據(jù)
data=client_socket.recv(1024)
# 查看客戶端發(fā)送的數(shù)據(jù)長(zhǎng)度
if len(data)!=0:data=data.decode('gbk')print(f'客戶端{(lán)ip_port[0]}使用端口{ip_port[1]}發(fā)送是數(shù)據(jù)是{data}')
else:print(f'客戶端{(lán)ip_port[0]}使用端口{ip_port[1]}關(guān)閉了連接')# 給客戶端發(fā)送數(shù)據(jù)
data='你好'.encode('gbk')
client_socket.send(data)
# 關(guān)閉客戶端
client_socket.close()
# 關(guān)閉服務(wù)端
server_socket.close()
總結(jié)
以上是生活随笔為你收集整理的Python基于socket实现的TCP服务端的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python基于socket实现的TCP
- 下一篇: Python基于socket实现的多任务