久久无码中文字幕_日韩精品无码一本二本三_久久精品呦女暗网_欧美一级夜夜爽_久久精品国产99久久99久久久

19
2020/09

python搭建scoket服務(wù)

發(fā)布時(shí)間:2020-09-19 16:08:27
發(fā)布者:神棍子
瀏覽量:
0

python環(huán)境中已經(jīng)自帶了scoket庫,只需要簡單的幾行代碼便可以搭建scoket環(huán)境進(jìn)行通信。

1.首先需要導(dǎo)入scoket包

        import scoket

2.然后初始化scoket實(shí)例,scoket方法中有三個(gè)參數(shù)(地址簇,類型,協(xié)議)

        init = scoket.scoket()

    參數(shù)一:地址簇

  socket.AF_INET IPv4(默認(rèn))

  socket.AF_INET6 IPv6

  socket.AF_UNIX 只能夠用于單一的Unix系統(tǒng)進(jìn)程間通信

    參數(shù)二:類型

  socket.SOCK_STREAM  流式socket , for TCP (默認(rèn))

  socket.SOCK_DGRAM   數(shù)據(jù)報(bào)式socket , for UDP

  socket.SOCK_RAW 原始套接字,普通的套接字無法處理ICMP、IGMP等網(wǎng)絡(luò)報(bào)文,而SOCK_RAW可以;其次,SOCK_RAW也可以處理特殊的IPv4報(bào)文;此外,利用原始套接字,可以通過IP_HDRINCL套接字選項(xiàng)由用戶構(gòu)造IP頭。

  socket.SOCK_RDM 是一種可靠的UDP形式,即保證交付數(shù)據(jù)報(bào)但不保證順序。SOCK_RAM用來提供對(duì)原始協(xié)議的低級(jí)訪問,在需要執(zhí)行某些特殊操作時(shí)使用,如發(fā)送ICMP報(bào)文。SOCK_RAM通常僅限于高級(jí)用戶或管理員運(yùn)行的程序使用。

  socket.SOCK_SEQPACKET 可靠的連續(xù)數(shù)據(jù)包服務(wù)

    參數(shù)三:協(xié)議

  0  (默認(rèn))與特定的地址家族相關(guān)的協(xié)議,如果是 0 ,則系統(tǒng)就會(huì)根據(jù)地址格式和套接類別,自動(dòng)選擇一個(gè)合適的協(xié)議

3.然后綁定ip地址和端口號(hào) 使用bind方法(默認(rèn)應(yīng)該都是自己的ip所以用localhost)

    init.bind(('localhost',1234))

4.然后開始監(jiān)聽連接,監(jiān)聽方式是listen(非阻塞,需填寫最大鏈接個(gè)數(shù))

    init.listen(5)

5.然后使用accept()方法阻塞鏈接等待信息傳遞,返回(套接字對(duì)象,ip)

    init.accept()

6.使用recv()接收數(shù)據(jù),接收過來的數(shù)據(jù)是二進(jìn)制所以還需要轉(zhuǎn)義

    data = conn.recv(1024)

    print(data.decode())

7.然后建立客戶端,1,2步相同,使用connect((ip,端口)),方法進(jìn)行連接

    init.connect(('localhost',1234))

8.發(fā)送信息send方法

    init.send('hello'.encode('utf-8'))

此時(shí)scoket搭建完成,看一下測試情況

    

socket

    

關(guān)鍵詞:
返回列表