pythonsocket編程-創(chuàng)新互聯(lián)

建立服務(wù)器連接需要六個步驟。

第1步是創(chuàng)建socket對象。調(diào)用socket構(gòu)造函數(shù)。

socket=socket.socket(familly,type)
family的值可以是AF_UNIX(Unix域,用于同一臺機(jī)器上的進(jìn)程間通訊),也可以是AF_INET(對于IPV4協(xié)議的TCP和 UDP),至于type參數(shù),SOCK_STREAM(流套接字)或者 SOCK_DGRAM(數(shù)據(jù)報文套接字),SOCK_RAW(raw套接字)。

第2步則是將socket綁定(指派)到指定地址上,socket.bind(address)

address必須是一個雙元素元組,((host,port)),主機(jī)名或者ip地址+端口號。如果端口號正在被使用或者保留,或者主機(jī)名或ip地址錯誤,則引發(fā)socke.error異常。

第3步,綁定后,必須準(zhǔn)備好套接字,以便接受連接請求。

socket.listen(backlog)
backlog指定了最多連接數(shù),至少為1,接到連接請求后,這些請求必須排隊,如果隊列已滿,則拒絕請求。

第4步,服務(wù)器套接字通過socket的accept方法等待客戶請求一個連接:

connection,address=socket.accept()
調(diào)用accept方法時,socket會進(jìn)入'waiting'(或阻塞)狀態(tài)??蛻粽埱筮B接時,方法建立連接并返回服務(wù)器。accept方法返回一個含有倆個元素的元組,形如(connection,address)。第一個元素(connection)是新的socket對象,服務(wù)器通過它與客戶通信;第二個元素(address)是客戶的internet地址。

第5步是處理階段

服務(wù)器和客戶通過send和recv方法通信(傳輸數(shù)據(jù))。服務(wù)器調(diào)用send,并采用字符串形式向客戶發(fā)送信息。send方法返回已發(fā)送的字符個數(shù)。服務(wù)器使用recv方法從客戶接受信息。調(diào)用recv時,必須指定一個整數(shù)來控制本次調(diào)用所接受的大數(shù)據(jù)量。recv方法在接受數(shù)據(jù)時會進(jìn)入'blocket'狀態(tài),最后返回一個字符串,用它來表示收到的數(shù)據(jù)。如果發(fā)送的量超過recv所允許,數(shù)據(jù)會被截斷。多余的數(shù)據(jù)將緩沖于接受端。以后調(diào)用recv時,多余的數(shù)據(jù)會從緩沖區(qū)刪除。

第6步,傳輸結(jié)束,服務(wù)器調(diào)用socket的close方法以關(guān)閉連接。

建立一個簡單客戶連接則需要4個步驟。

第1步,創(chuàng)建一個socket以連接服務(wù)器 socket=socket.socket(family,type)

第2步,使用socket的connect方法連接服務(wù)器 socket.connect((host,port))

第3步,客戶和服務(wù)器通過send和recv方法通信。

第4步,結(jié)束后,客戶通過調(diào)用socket的close方法來關(guān)閉連接。

server.py
#!/usr/bin/env python
# TCP-server
import socket
import time

HOST=''
PORT=8001
BUFSIZ=1024

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.bind((HOST,PORT))
sock.listen(5)
while True:
   print 'waiting for connection...'
   connection,address=sock.accept()
   print ('connection from', address)
   while True:
      try:
         data=connection.recv(BUFSIZ)
      except:
         print (e)
         connection.close()
         break
      if not data:
         break
      s='Hi,you send me : [%s] %s' % (time.ctime(),data.decode('utf8'))
      connection.send(s.encode('utf8'))
      print ([time.ctime()],':',data.decode('utf8'))
connection.close()
sock.close()

client.py
#!/usr/bin/env python
# TCP-client
import socket
import sys

HOST='127.0.0.1'
PORT=8001
BUFSIZ=1024
client=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((HOST,PORT))
while True:
   data=raw_input('-->')
   if data=='quit':
      sys.exit()
   client.send('%s\r\n' % data.encode('utf8'))
   d=client.recv(BUFSIZ)
   print (d.decode('utf8'))

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比大新網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式大新網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大新地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前題目:pythonsocket編程-創(chuàng)新互聯(lián)
分享路徑:http://muchs.cn/article28/psojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT網(wǎng)站導(dǎo)航、網(wǎng)站改版、云服務(wù)器小程序開發(fā)、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)