python-socket程式設計入門
- 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 進行了 區分.