1. 程式人生 > >python 3.5(socket)

python 3.5(socket)

處理 ip地址 python3 col 簡單 server rdm 特定 操作

Socket

socket通常也稱作"套接字",用於描述IP地址和端口,是一個通信鏈的句柄,應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。

socket起源於Unix,而Unix/Linux基本哲學之一就是“一切皆文件”,對於文件用【打開】【讀寫】【關閉】模式來操作。socket就是該模式的一個實現,socket即是一種特殊的文件,一些socket函數就是對其進行的操作(讀/寫IO、打開、關閉)

socket和file的區別:

  • file模塊是針對某個指定文件進行【打開】【讀寫】【關閉】
  • socket模塊是針對 服務器端 和 客戶端Socket 進行【打開】【讀寫】【關閉】

技術分享圖片

簡單測試

socket.server服務器端

#
!/use/bin/env python3 #-*-conding:UTF-8-*- import socket import sys # 創建 socket 對象 serversocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM) # 獲取本地主機名 host = (10.10.10.68) port = 9999 # 綁定端口 serversocket.bind((host, port)) # 設置最大連接數,超過後排隊 serversocket.listen(5)
while True: # 建立客戶端連接 client_socket, addr = serversocket.accept() print("連接地址: %s" % str(addr)) manager = 我勒個大草! + "\r\n" client_socket.send(manager.encode(utf-8)) client_socket.close()
socket.client客戶端
#!/use/bin/env python3
#-*-conding:UTF-8-*-

import socket


# 創建 socket 對象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #AF_INET使用IPV4,SOCK_STREAM使用TCP協議 (默認) # 獲取本地主機名 host = (10.10.10.68) # 設置端口好 port = 9999 # 連接服務,指定主機和端口 s.connect((host, port)) # 接收小於 1024 字節的數據 manager = s.recv(1024) s.close() print (manager.decode(utf-8))

更多功能

sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)

參數一:地址簇

  socket.AF_INET IPv4(默認)
  socket.AF_INET6 IPv6

  socket.AF_UNIX 只能夠用於單一的Unix系統進程間通信

參數二:類型

  socket.SOCK_STREAM  流式socket , for TCP (默認)
  socket.SOCK_DGRAM   數據報式socket , for UDP

  socket.SOCK_RAW 原始套接字,普通的套接字無法處理ICMP、IGMP等網絡報文,而SOCK_RAW可以;其次,SOCK_RAW也可以處理特殊的IPv4報文;此外,利用原始套接字,可以通過IP_HDRINCL套接字選項由用戶構造IP頭。
  socket.SOCK_RDM 是一種可靠的UDP形式,即保證交付數據報但不保證順序。SOCK_RAM用來提供對原始協議的低級訪問,在需要執行某些特殊操作時使用,如發送ICMP報文。SOCK_RAM通常僅限於高級用戶或管理員運行的程序使用。
  socket.SOCK_SEQPACKET 可靠的連續數據包服務

參數三:協議

  0  (默認)與特定的地址家族相關的協議,如果是 0 ,則系統就會根據地址格式和套接類別,自動選擇一個合適的協議

 

 

python 3.5(socket)