1. 程式人生 > >python-socket程式設計入門

python-socket程式設計入門

  1. tcp udp  socket程式設計.  注意根據二者的有無連線對比.

注意: 以下的操作 存在順序,顯然要先bind,再listen嘛

 

TCP   server

(1)新建socket物件 s

s=socket.socket()

繫結地址,設定可接受的連線數量

s.bind( ('xxx.xxx.xxx.xxx',xxxx)  )    #ip地址和埠號

s.listen(5)

(3)獲得一個客戶端連線

Conn,address = s.accept()

 Conn是該連結的套接字,address為 ip:port

可以進行send or receive操作了

UDP server

在tcp 上,減去 s.listen 和 coon,addr =s.accept()

 

TCP client

新建socket 例項  s=socket.socket()  s.bind()///客戶端也可以繫結埠,一般不推薦

連線到伺服器   s.connet((‘ip’,port))

Udp server, 不需要s.connet((‘ip’,port))

000000000000000000000000000000000000000000000000000000

具體的 傳送  和 接收

Send()  sendto(多加地址), Sendto(bytes,address)

 

Recv   recvfrom(多返回addr)

均返回bytes型別的datadata, addr = s.recvfrom(1024)

注意bytes 和strings 的型別轉換:

字元編碼:如ascII碼, 不同的字元 對於 不同的asc 碼.

Unicode也是一種碼,兩個byte 表示一個字元.

Utf-8 編碼:節省空間:常用的英文字母被編碼成1個位元組,漢字通常是3個位元組

記憶體中用unicode, 網路或者硬盤裡 用 utf-8 編碼

用記事本編輯的時候,從檔案讀取的UTF-8字元被轉換為Unicode字元到記憶體裡,編輯完成後,儲存的時候再把Unicode轉換為UTF-8儲存到檔案   

 

同理.  注意:是在py3中

Python3中的str,在記憶體裡為 unicode編碼, 一個字元---多個byte

根據以上規則,在  網路傳輸 或者存在硬碟上  則要編成其他型別的碼.

比如:  ‘abc’.encode(‘ascii’)   編為ASCII碼 儲存起來

Encode  ,decode

 

 

 

cs.send('byebye')

ra=cs.recv(512)

cs.close()

注意py3中 對bytes和strings 進行了 區分.