python socket編程

來源:互聯網
上載者:User

標籤:運行   發送資料   sock   pos   print   unix   針對   快速開發   stream   

  Socket源於Unix的“一切借檔案”的思想,簡而言之就是類似與file的:開啟——讀寫——關閉的操作,file針對與檔案進行操作,socket針對與伺服器和用戶端進行操作。基於網路進行通訊,必然逃不開各種網路通訊協定,為了快速開發,在應用程式層和傳輸層之間加入socket層,從而將tcp(udp)的協議進行封裝,便於進行開發。

  首先寫一個簡單的基於socket的網路通訊

 1 # import socket 2 from socket import * 3 ip_port=(‘127.0.0.1‘,8080) 4 back_log=5 5 buffer_size=1024 6  7 tcp_client=socket(AF_INET,SOCK_STREAM) 8 tcp_client.connect(ip_port) 9 10 while True:11     msg=input(‘>>: ‘).strip()12     if not msg:continue13     tcp_client.send(msg.encode(‘utf-8‘))14     print(‘用戶端已經發送訊息‘)15     data=tcp_client.recv(buffer_size)16     print(‘收到服務端發來的訊息‘,data.decode(‘utf-8‘))17 18 tcp_client.close()

# import socketfrom socket import *ip_port=(‘127.0.0.1‘,8080)back_log=5buffer_size=1024tcp_server=socket(AF_INET,SOCK_STREAM)tcp_server.bind(ip_port)tcp_server.listen(back_log)while True:    print(‘服務端開始運行了‘)    conn,addr=tcp_server.accept() #服務端阻塞    print(‘雙向連結是‘,conn)    print(‘用戶端地址‘,addr)    while True:        # try:            data=conn.recv(buffer_size)            print(‘用戶端發來的訊息是‘,data.decode(‘utf-8‘))            conn.send(data.upper())        # except Exception:        #     break    conn.close()tcp_server.close()

  伺服器端先初始化Socket,然後與連接埠綁定(bind),對連接埠進行監聽(listen),調用accept阻塞,等待用戶端串連。在這時如果有個用戶端初始化一個Socket,然後串連伺服器(connect),如果串連成功,這時用戶端與伺服器端的串連就建立了。用戶端發送資料請求,伺服器端接收請求並處理請求,然後把回應資料發送給用戶端,用戶端讀取資料,最後關閉串連,一次互動結束。

  socket中常用的方法有如下幾個

socket.socket():建立socker通訊端,兩個參數,family代表家族.type代表類型,type預設TCP

socket.bind():伺服器端,接受的參數是元組,不是傳遞host,port兩個元素,而是(host,port),綁定主機,連接埠號碼到通訊端

socket.listen():一個參數,值為允許用戶端串連伺服器的排隊上線,如果超過掛起上限則會拒絕掉, 開始監聽綁定的連接埠號碼

socket.accept():無參數,其傳回值是一個元組,第一個是新的通訊端對象,第二個是地址,被動接受tcp客戶連結,阻賽式等待串連的到來

socket.connect():主動初始化tcp的伺服器串連

socket.connect_ex():connect()的擴充版,出錯返回錯誤碼,而非拋出異常

 

 

 

 

python socket編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.