(一)socket筆記
阿新 • • 發佈:2018-12-01
socket(套接字)
發資料
1.流程:建立套接字----->使用套接字收/發資料------>關閉
2. 建立一個tcp socket
import socket
#建立套接字
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #stream 流,小河,流播
#使用套接字....
#關閉套接字
s.close()
3.建立一個udp socket
import socket s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #dgram離散可控性,可觀性 s.close()
4.建立socket說明
在python中使用socket模組的函式就可以完成
socket.socket(引數1,引數2)
引數1:
可以選擇AF_INET(用於internet程序間通訊),或者AF_UNIX(用於同一臺機器程序間通訊)
引數2:
套接字型別:可以是SOCK_STREAM(流式套接字,主要用於tcp)或者是SOCK_DGGRAN(資料報套接字)
5.例項:
import socket def main(): s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('xx.x.x.x'),7788) #繫結ip和埠號 s.sendto(b'haha',('x.x.x.x',6666)) #兩個引數。第一個是位元組型的傳送內容,第二個為元組型,包括目的ip和埠號 ''' 或者 send_data=input('請輸入資料:') s.sendto(send_data.encode('utf-8'),('xx.x.x.x.',6666)) ''' s.close() if __name__ == '__main__': main()
網路除錯助手顯示:
收資料
def recive_udp(): #建立聯結器 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #繫結本地的相關資訊,如果不穩定會隨機分配 local_adr=("xx.xx.xx.xx",7788) #ip地址和埠號 ,ip一般不用寫,表示本機ip udp_socket.bind(local_adr) #傳入的是元組 #等待接受對方傳送的資料 recv_data=udp_socket.recvfrom(1024) #表示本次接受的最大位元組數 #列印 print(recv_data[0].decode('gbk')) #關閉 udp_socket.close()
案列
import socket
def main():
udp_sockrt=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #udp
udp_sockrt.bind(('x.x.x.x',7788))
desc_ip=input('請輸入目的ip:')
desc_port=input('輸入目的埠:')
send_mes=input('傳送內容:')
#傳送
udp_sockrt.sendto(send_mes.encode('utf-8'),(desc_ip,int(desc_port)))
#接受
rec_data=udp_sockrt.recvfrom(1024)
print(rec_data[0].decode('gbk')) #顯示
udp_sockrt.close()
if __name__ == '__main__':
main()
單工:資料傳輸是單向的。通訊雙方中,一方固定為傳送端,一方則固定為接收端(收音機)
半雙工:半雙工資料傳輸允許資料在兩個方向上傳輸,但是,在某一時刻,只允許資料在一個方向上傳輸,它實際上是一種切換方向的單工通訊;在同一時間只可以有一方接受或傳送資訊,可以實現雙向通訊。舉例:對講機。
全工:全雙工資料通訊允許資料同時在兩個方向上傳輸,因此,全雙工通訊是兩個單工通訊方式的結合,它要求傳送裝置和接收裝置都有獨立的接收和傳送能力;在同一時間可以同時接受和傳送資訊,實現雙向通訊,舉例:電話通訊。