日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python----socket编程

發(fā)布時間:2023/12/2 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python----socket编程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

socket

一、socket是什么?

socket 通常也稱為“套接字”,用于描述 IP 地址和端口,是一個通訊鏈的句柄。應用程序通常通過 “套接字”向網(wǎng)絡(luò)發(fā)出請求或者應答網(wǎng)絡(luò)請求。說白了,就是一種通訊機制。它類似于公司的電話客服部門,你打電話的時候,那邊會分配一個人回答你的問題,客服部門就相當于 socket 的服務(wù)器端了,打電話的人相當于客戶端了,在和你通話結(jié)束前,如果有人在想找和你通話的哪個客服人員,是不可能的,因為你在和他通話,當

套接字分類:1、基于文件類型的套接字家族;套接字家族的名字:AF_UNIX
2、基于網(wǎng)絡(luò)類型的套接字家族;套接字家族的名字:AF_INET

二、套接字:通信端點

1、套接字
  套接字是計算機網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu),它體現(xiàn)了上節(jié)中所描述的“通信端點”的概念。在任何類型的通信開始之前,網(wǎng)絡(luò)應用程序必須創(chuàng)建套接字。
  有兩種類型的套接字:基于文件和面向網(wǎng)絡(luò)的。
2、套接字地址:主機-端口對
  如果一個套接字像一個電話插孔-允許通信的一些基礎(chǔ)設(shè)施,那么主機名和端口號就像區(qū)號和電話號碼的組合。有效的端口號范圍為0-65535(小于1024的端口號預留給了系統(tǒng))
3、面向連接的套接字和與無連接的套接字
  面向連接,在進行通信之前必須建立一個連接。實現(xiàn)這種連接類型主要協(xié)議是TCP(傳輸控制協(xié)議)
  無連接,在通信之前并不需要建立連接。主要協(xié)議是UDP(用戶數(shù)據(jù)報協(xié)議)

三、socket()函數(shù)

Python 中,我們用 socket()函數(shù)來創(chuàng)建套接字,語法格式如下:

socket.socket([family[, type[, proto]]])

參數(shù)
family: 套接字家族可以使AF_UNIX或者AF_INET
type: 套接字類型可以根據(jù)是面向連接的還是非連接分為SOCK_STREAM或SOCK_DGRAM
protocol: 一般不填默認為0.

四、Socket 對象(內(nèi)建)方法



五、簡單實例

服務(wù)端
我們使用 socket 模塊的 socket 函數(shù)來創(chuàng)建一個 socket 對象。socket 對象可以通過調(diào)用其他函數(shù)來設(shè)置一個 socket 服務(wù)。
現(xiàn)在我們可以通過調(diào)用 bind(hostname, port) 函數(shù)來指定服務(wù)的 port(端口)。
接著,我們調(diào)用 socket 對象的 accept 方法。該方法等待客戶端的連接,并返回 connection 對象,表示已連接到客戶端。
完整代碼如下:

#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:server.pyimport socket # 導入 socket 模塊s = socket.socket() # 創(chuàng)建 socket 對象 host = socket.gethostname() # 獲取本地主機名 port = 12345 # 設(shè)置端口 s.bind((host, port)) # 綁定端口s.listen(5) # 等待客戶端連接 while True:c,addr = s.accept() # 建立客戶端連接print '連接地址:', addrc.send('歡迎訪問菜鳥教程!')c.close() # 關(guān)閉連接

客戶端
接下來我們寫一個簡單的客戶端實例連接到以上創(chuàng)建的服務(wù)。端口號為 12345。
socket.connect(hosname, port ) 方法打開一個 TCP 連接到主機為 hostname 端口為 port 的服務(wù)商。連接后我們就可以從服務(wù)端獲取數(shù)據(jù),記住,操作完成后需要關(guān)閉連接。
完整代碼如下:

#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:client.pyimport socket # 導入 socket 模塊s = socket.socket() # 創(chuàng)建 socket 對象 host = socket.gethostname() # 獲取本地主機名 port = 12345 # 設(shè)置端口號s.connect((host, port)) print s.recv(1024) s.close()

現(xiàn)在我們打開兩個終端,第一個終端執(zhí)行 server.py 文件:

$ python server.py

第二個終端執(zhí)行 client.py 文件:

$ python client.py

這時我們再打開第一個終端,就會看到有以下信息輸出:

連接地址: ('192.168.0.118', 62461)

總結(jié)

以上是生活随笔為你收集整理的Python----socket编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。