最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中的TCP socket寫法示例

 更新時間:2018年05月11日 11:23:03   作者:gaby_yan  
最近在學(xué)習(xí)腳本語言python,所以下面這篇文章主要給大家介紹了關(guān)于Python中TCP socket寫法的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們一起來看看吧

前言

本文主要介紹了關(guān)于Python中TCP socket的寫法,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細的介紹吧。

一、 服務(wù)器server的寫法:

1. 創(chuàng)建 socket 套接字:

網(wǎng)絡(luò)編程接口 socket(family = AF_INET , type = SOCKET_STREM,proto = 0, fileno = None)   提供了多種socket family。AF_INET 是默認的family,需要綁定IP和端口。 127.0.0.1是一個特殊的IP地址,表示本機地址。如果綁定到這個地址,客戶端必須同時在本機運行才能連接,也就是說,外部的計算機無法連接進來。

不同的協(xié)議family使用的地址形式不同,通常來說我們使用的是AF_INET-----地址是以(IP,PORT)形式存。在type 類型,我們常用的有兩種 SOCKET_STREM ,流式套接字,表示基于連接的TCP套接字,SOCKET_DGRAM, 數(shù)據(jù)報套接字,基于無連接的(UDP)接口?!∪绻辉O(shè)定,默認就是 SOCKET_STREM 。

2. bind 綁定     

使用方法:socket.bind(address)  把套接字綁定在 address 上,address的形式 根據(jù) family 來設(shè)定。不管是client還是server,創(chuàng)建socket的時候都是通過一個本地的文件來進行的?! ?/p>

3. listen 監(jiān)聽      

使用方法:socket.listen([backlog])  使能 socket 接收連接請求,listen(self,backlog = None) ,backlog需要大于0,指定了可以緩存的連接請求的數(shù)量。

4. accept 接受請求連接

在等待一個即將來臨的連接,會返回一個代表連接的新的socket,還會返回一個地址(host和port),可以用兩個東西接收,前一個代表新的socket,后一個就是接收地址。

寫的方法:connet_socket,client_addr = srv.accept() connet_socket就是新的socket,然后connet_socket開始接下來的傳輸。connet_socket,client_addr,前者表示接收的新的socket,后者就是地址,具體看程序第10行。

5. 接收數(shù)據(jù)  

使用方法:socket.recv(bufsize[,flags])  從 socket 中接收數(shù)據(jù),返回的是 bytes ,是接收到的內(nèi)容。bufsize指定了一次最多接收多少個數(shù)據(jù),如果沒有數(shù)據(jù)接收,程序會阻塞,一直到有數(shù)據(jù)或者遠程終端斷開連接.

6. 發(fā)送數(shù)據(jù)  

使用方法:socket.send(bytes[, flags])  你的socket必須和遠程的socket建立了聯(lián)系,返回值是發(fā)送的數(shù)量,可以判斷你的數(shù)據(jù)是否發(fā)送完畢,如果沒有,繼續(xù)send余下來的數(shù)據(jù)

import socket
hostname = '127.0.0.1' #設(shè)置主機名
port = 6666  #設(shè)置端口號 要確保這個端口號沒有被使用,可以在cmd里面查看
addr = (hostname,port)
srv = socket.socket() #創(chuàng)建一個socket
srv.bind(addr)
srv.listen(5)
print("waitting connect")
while True:
 connect_socket,client_addr = srv.accept()
 print(client_addr)
 recevent = connect_socket.recv(1024)
 print(str(recevent,encoding='gbk'))
 connect_socket.send.send(bytes("你好,數(shù)據(jù)傳輸完成,這里是gaby-yan--server",encoding='gbk'))
 connect_socket.close()

二、 客戶端client的寫法:

客戶端的寫法相對比較簡單,只有

1.創(chuàng)建socket  

2. 建立連接 connect  

3. 發(fā)送 send  

4. 接收recv  

這是由于他們的傳遞編程框架不同造成的,如圖。

 

import socket
hostname = '127.0.0.1'
port = 7777
addr = (hostname,port)

clientsock = socket.socket() ## 創(chuàng)建一個socket
clientsock.connect(addr) # 建立連接

say = input("輸入你想傳送的消息:")
clientsock.send(bytes(say,encoding='gbk')) #發(fā)送消息
recvdata = clientsock.recv(1024)  #接收消息 recvdata 是bytes形式的
print(str(recvdata,encoding='gbk')) # 我們看不懂bytes,所以轉(zhuǎn)化為 str
clientsock.close()

注意:先運行server的代碼,再運行client的代碼。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 淺析python參數(shù)的知識點

    淺析python參數(shù)的知識點

    在本文里小編給大家分享的是關(guān)于python參數(shù)的知識點內(nèi)容,正在學(xué)習(xí)的讀者們跟著思考下吧。
    2018-12-12
  • 詳解MindSpore自定義模型損失函數(shù)

    詳解MindSpore自定義模型損失函數(shù)

    在不同的訓(xùn)練場景中,我們時常需要使用不同的損失函數(shù)來衡量一個模型的計算結(jié)果的優(yōu)劣,本文重點介紹了在MindSpore中如何去自定義一個損失函數(shù)。基于MindSpore中的Loss類,我們可以通過繼承該類后,再重寫construct函數(shù)和get_loss函數(shù)實現(xiàn)全面自定義的損失函數(shù)形式與內(nèi)容
    2021-06-06
  • Python實現(xiàn)批量添加視頻文本水印

    Python實現(xiàn)批量添加視頻文本水印

    這篇文章主要為大家詳細介紹了如何基于PyQt5開發(fā)一個視頻水印批量添加工具,旨在為多個視頻文件添加文本水印,感興趣的小伙伴可以參考一下
    2025-02-02
  • Numpy中的repeat函數(shù)使用

    Numpy中的repeat函數(shù)使用

    Numpy是Python強大的數(shù)學(xué)計算庫,和Scipy一起構(gòu)建起Python科學(xué)計算生態(tài),在本節(jié)下面我們重點介紹下repeat函數(shù)的用法,需要的朋友可以參考下
    2022-11-11
  • 在PyCharm中實現(xiàn)關(guān)閉一個死循環(huán)程序的方法

    在PyCharm中實現(xiàn)關(guān)閉一個死循環(huán)程序的方法

    今天小編就為大家分享一篇在PyCharm中實現(xiàn)關(guān)閉一個死循環(huán)程序的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • 使用Python的xlwings操作Excel的屬性和方法

    使用Python的xlwings操作Excel的屬性和方法

    這篇文章主要介紹了使用Python的xlwings操作Excel的屬性和方法,xlwings?是?Python?操作?Excel?的庫之一,主要作為兩門語言的交互工具,是python?操作excel比較成熟、杰出的庫,調(diào)用簡單方便,而且功能強大,需要的朋友可以參考下
    2023-07-07
  • Python使用collections模塊實現(xiàn)擴展數(shù)據(jù)類

    Python使用collections模塊實現(xiàn)擴展數(shù)據(jù)類

    Python?標準庫提供了一個?collections?模塊,里面提供了很多的數(shù)據(jù)類,在工作中使用這些類能夠簡化我們的開發(fā),本文就來看看collections是如何實現(xiàn)擴展數(shù)據(jù)類的吧
    2023-06-06
  • 使用C++擴展Python的功能詳解

    使用C++擴展Python的功能詳解

    這篇文章主要介紹了使用C++擴展Python的功能詳解,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python調(diào)試代碼的高效方法分享

    Python調(diào)試代碼的高效方法分享

    寫代碼最讓人抓狂的,不是邏輯想不明白,而是代碼跑起來——直接爆炸,所以本文小編給大家介紹如何快速找出 Bug,并解決它們,感興趣的小伙伴跟著小編一起來看看吧
    2025-04-04
  • Python正則表達式指南 推薦

    Python正則表達式指南 推薦

    本文介紹了Python對于正則表達式的支持,包括正則表達式基礎(chǔ)以及Python正則表達式標準庫的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達式、如何優(yōu)化正則表達式,這些主題請查看其他教程。
    2018-10-10

最新評論

南江县| 栾川县| 榕江县| 富裕县| 竹溪县| 湘乡市| 临洮县| 通道| 彭阳县| 台中市| 吐鲁番市| 天全县| 山阳县| 宁明县| 聊城市| 铁力市| 乌拉特前旗| 八宿县| 营山县| 常宁市| 新巴尔虎右旗| 广西| 西林县| 来安县| 横山县| 贺州市| 保定市| 黄陵县| 克山县| 赤水市| 盐山县| 蚌埠市| 资阳市| 抚顺县| 桓台县| 房产| 建水县| 土默特左旗| 江城| 广德县| 孟州市|