Python 網絡編程之TCP客戶端/服務端功能示例【基于socket套接字】
更新時間:2019年10月12日 10:11:24 作者:houyanhua1
這篇文章主要介紹了Python 網絡編程之TCP客戶端/服務端功能,結合實例形式分析了Python使用socket套接字實現(xiàn)TCP協(xié)議下的客戶端與服務器端數(shù)據傳輸操作技巧,需要的朋友可以參考下
本文實例講述了Python 網絡編程之TCP客戶端/服務端功能。分享給大家供大家參考,具體如下:
demo.py(TCP客戶端):
import socket
def main():
# 1. 創(chuàng)建tcp的套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2. 鏈接服務器
# tcp_socket.connect(("192.168.33.11", 7890))
server_ip = input("請輸入要鏈接的服務器的ip:")
server_port = int(input("請輸入要鏈接的服務器的port:"))
server_addr = (server_ip, server_port)
tcp_socket.connect(server_addr)
# 3. 發(fā)送數(shù)據/接收數(shù)據
send_data = input("請輸入要發(fā)送的數(shù)據:")
tcp_socket.send(send_data.encode("utf-8"))
# 接收數(shù)據。 會阻塞代碼,直到接收到數(shù)據
recv_data = tcp_socket.recv(1024) # 1024表示本次接收的最大字節(jié)數(shù)。
print(recv_data.decode("utf-8"))
# 4. 關閉套接字
tcp_socket.close()
if __name__ == "__main__":
main()
demo.py(TCP服務端):
import socket
def main():
# 1. 創(chuàng)建套接字 socket
tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 設置當服務器先close 即服務器端4次揮手之后資源能夠立即釋放,這樣就保證了,下次運行程序時 可以立即綁定7890端口 (如果服務端先close,再啟動服務端就不會報端口被占用的錯誤。)
tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
# 2. 綁定本機ip和端口號 bind
tcp_server_socket.bind(("", 7890))
# 3. 監(jiān)聽客戶端的鏈接請求 listen (由主動去鏈接服務器,變成被客戶端鏈接)
tcp_server_socket.listen(128) # 128影響鏈接客戶端的數(shù)量(并發(fā)量)(和操作系統(tǒng)也有關)
# 4. 接受客戶端的鏈接 accept。 會阻塞代碼,直到有客戶端鏈接
new_client_socket, client_addr = tcp_server_socket.accept()
print(client_addr) # ("192.168.33.109",53766) 客戶端的ip和端口
# 接收客戶端發(fā)送過來的數(shù)據。 會阻塞代碼,直到接收到數(shù)據
recv_data = new_client_socket.recv(1024) # 1024表示本次接收的最大字節(jié)數(shù)。
print(recv_data.decode("utf-8")) # 如果recv_data為空,表示客戶端斷開鏈接
# 寫數(shù)據給客戶端
new_client_socket.send("hahahghai-----ok-----".encode("utf-8"))
# 關閉套接字
new_client_socket.close() # 與客戶端通信的套接字
tcp_server_socket.close() # 服務器套接字
if __name__ == "__main__":
main()
更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python數(shù)據結構與算法教程》、《Python函數(shù)使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設計有所幫助。
相關文章
基于Python實現(xiàn)五子棋-(人機對戰(zhàn))
這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)五子棋游戲(人機對戰(zhàn)版),文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2022-05-05
OpenCV+Python識別車牌和字符分割的實現(xiàn)
這篇文章主要介紹了OpenCV+Python識別車牌和字符分割的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

