1. 程式人生 > 實用技巧 >一鍵SSH連線 = SSH金鑰登陸 + WindowsTerminal

一鍵SSH連線 = SSH金鑰登陸 + WindowsTerminal

本文例項講述了Python 網路程式設計之TCP客戶端/服務端功能。分享給大家供大家參考,具體如下:

demo.py(TCP客戶端):

import socket
def main():
  # 1. 建立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. 傳送資料/接收資料
  send_data = input("請輸入要傳送的資料:")
  tcp_socket.send(send_data.encode("utf-8"))
  # 接收資料。 會阻塞程式碼,直到接收到資料
  recv_data = tcp_socket.recv(1024) # 1024表示本次接收的最大位元組數。
  print(recv_data.decode("utf-8"))
  # 4. 關閉套接字
  tcp_socket.close()
if __name__ == "__main__":
  main()

demo.py(TCP服務端):

import socket
def main():
  # 1. 建立套接字 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. 監聽客戶端的連結請求 listen (由主動去連結伺服器,變成被客戶端連結)
  tcp_server_socket.listen(128) # 128影響連結客戶端的數量(併發量)(和作業系統也有關)
  # 4. 接受客戶端的連結 accept。 會阻塞程式碼,直到有客戶端連結
  new_client_socket, client_addr = tcp_server_socket.accept()
  print(client_addr) # ("192.168.33.109",53766) 客戶端的ip和埠
  # 接收客戶端傳送過來的資料。 會阻塞程式碼,直到接收到資料
  recv_data = new_client_socket.recv(1024) # 1024表示本次接收的最大位元組數。
  print(recv_data.decode("utf-8")) # 如果recv_data為空,表示客戶端斷開連結
  # 寫資料給客戶端
  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資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總

希望本文所述對大家Python程式設計有所幫助。