python中的TCP編程學習

來源:互聯網
上載者:User

標籤:tcp編程   python   

今天看了一下關於python的TCP編程。發現思路和其他語言(例如java)思路基本上差不多。

先看用戶端。基本步驟如下:

  • 第一步:建立一個socket
  • 第二步:建立串連
  • 第三步:發送資料
  • 第四步:讀取從伺服器發送過來的資料
  • 第五步:關閉串連
  • 第六步:對收到的資料進行處理

下面為python的TCP編程的用戶端程式的一個小例子。java中關於網路編程的博文請看這裡

#coding:utf-8#TCP編程的用戶端程式#編寫用戶端程式與其它語言(例如java)的思路差不多。如下#第一步:建立一個socketimport sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#第二步:建立串連,參數是一個tuple,以訪問新浪為例s.connect((‘www.sina.com.cn‘,80))#80連接埠是Web服務的標準連接埠#第三步:發送資料s.send(b‘GET / HTTP/1.1\r\n Host:www.sina.com.cn\r\nConnection:close\n\r\n‘)#第四步:接收資料buffer=[]while True:    d=s.recv(1024)  #recv(max)方法,表示每次只能讀取max個位元組    if d:        buffer.append(d)    else:        breakdate=b‘‘.join(buffer)#第五步:關閉串連s.close()#第六步:對接收到的資料進行處理#由於接收到的資料包括http頭和網頁本身,因此將其分開header,html=date.split(b‘\r\n\r\n‘,1)print(header.decode(‘utf-8‘))with open(‘sina.html‘,‘wb‘) as f:    f.write(html)

下面看伺服器端的程式,思路如下

  • 第一步:建立一個socket
  • 第二步:綁定監聽的地址和連接埠,方法bind()只接收一個tuple
  • 第三步:調用listen()方法開始監聽連接埠,傳入的參數指定等待串連的最大數量
  • 第四步:伺服器程式通過一個永久迴圈來接收來自用戶端,accept()會等待並返回一個用戶端的串連
#python中的伺服器端的程式,其用來測試的用戶端程式為:tcpClient1.py#coding:utf-8import socketimport threadingdef tcplink(sock,addr):    print(‘Accept new connection from %s:%s...‘%addr)    sock.send(b‘welcome‘)    while True:        date=sock.recv(1024)        if not date or date.decode(‘utf-8‘)==‘exit‘:            break         print(date.decode(‘utf-8‘))     sock.close()    print(‘Connection from %s:%s‘%addr)#第一步:建立一個sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#第二步:綁定監聽的地址和連接埠,方法bind()只接收一個tuples.bind((‘127.0.0.1‘,9999))#第三步:調用listen()方法開始監聽連接埠,傳入的參數指定等待串連的最大數量s.listen(10)#第四步:伺服器程式通過一個永久迴圈來接收來自用戶端,accept()會等待並返回一個用戶端的串連while True:    sock,addr=s.accept()    #建立一個新線程來處理TCP連結    threading.Thread(target=tcplink,args=(sock,addr)).start()

測試上面的伺服器端的程式,我們用一個簡單的用戶端程式來測試,如下

#為tcpServer伺服器端寫一個測試的用戶端程式#coding:utf-8import socket#第一步:建立一個sockets=socket.socket(socket.AF_INET,socket.SOCK_STREAM)#第二步:建立串連s.connect((‘127.0.0.1‘,9999))#第三步:發送資料s.send(b‘hello World!‘)#第三步:接收資料date=s.recv(1024)print(date.decode(‘utf-8‘))

剛好前幾天系統的學習了一下git版本控制這個工具,於是,也就開始經營我的Github了,上面的代碼可在我的Github中下載,點擊這裡即可

參考地址如下:關於TCP編程的詳細介紹http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432004374523e495f640612f4b08975398796939ec3c000

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

python中的TCP編程學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.