摘要:提供了兩個基本的模塊,它提供了標準的。類型套接字格式使用給定的地址族套接字類型協(xié)議編號默認為來創(chuàng)建套接字。函數(shù)注意點發(fā)送數(shù)據(jù)時,已建立好連接,所以不需要指定地址。是面向無連接,每次發(fā)送要指定是發(fā)給誰。
Python 提供了兩個基本的 socket 模塊
Socket,它提供了標準的 BSD Sockets API。
SocketServer,它提供了服務器中心類,可以簡化網(wǎng)絡服務器的開發(fā)。
Socket 類型套接字格式:
socket(family,type[,protocal]) 使用給定的地址族、套接字類型、協(xié)議編號(默認為0)來創(chuàng)建套接字。
注意點:
TCP發(fā)送數(shù)據(jù)時,已建立好TCP連接,所以不需要指定地址。UDP是面向無連接,每次發(fā)送要指定是發(fā)給誰。
服務端與客戶端不能直接發(fā)送列表,元組,字典。需要字符串化repr(data)。
Socekt編程思路TCP服務端:
創(chuàng)建套接字,綁定套接字到本地IP與端口
socket.socket(socket.AF_INET,socket.SOCK_STREAM),s.bind()
開始監(jiān)聽連接
s.listen()
進入循環(huán),不斷接受客戶端的連接請求
s.accept()
然后接收傳來的數(shù)據(jù),并發(fā)送給對方數(shù)據(jù)
s.recv() , s.sendall()
傳輸完畢后,關閉套接字
s.close()
TCP客戶端:
創(chuàng)建套接字,連接遠端地址
socket.socket(socket.AF_INET,socket.SOCK_STREAM),s.connect()
連接后發(fā)送數(shù)據(jù)和接收數(shù)據(jù)
s.sendall(), s.recv()
傳輸完畢后,關閉套接字
s.close()
服務端實例代碼#!/usr/bin/python import socket # socket模塊 import commands # 執(zhí)行系統(tǒng)命令模塊 HOST = "192.168.4.37" PORT = 50007 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 定義socket類型,網(wǎng)絡通信,TCP s.bind((HOST,PORT)) # 套接字綁定的IP與端口 s.listen(1) # 開始TCP監(jiān)聽 while 1: conn,addr=s.accept() # 接受TCP連接,并返回新的套接字與IP地址 print"Connected by",addr # 輸出客戶端的IP地址 while 1: data=conn.recv(1024) # 把接收的數(shù)據(jù)實例化 cmd_status,cmd_result = commands.getstatusoutput(data) # commands.getstatusoutput執(zhí)行系統(tǒng)命令(即shell命令),返回兩個結果,第一個是狀態(tài),成功則為0,第二個是執(zhí)行成功或失敗的輸出信息 if len(cmd_result.strip()) ==0: # 如果輸出結果長度為0,則告訴客戶端完成。此用法針對于創(chuàng)建文件或目錄,創(chuàng)建成功不會有輸出信息 conn.sendall("Done.") else: conn.sendall(cmd_result) # 否則就把結果發(fā)給對端(即客戶端) conn.close() # 關閉連接客戶端示例代碼
#!/usr/bin/python import socket HOST = "192.168.4.37" PORT = 50007 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 定義socket類型,網(wǎng)絡通信,TCP s.connect((HOST,PORT)) # 要連接的IP與端口 while 1: cmd=raw_input("Please input cmd:") # 與人交互,輸入命令 s.sendall(cmd) # 把命令發(fā)送給對端 data=s.recv(1024) # 把接收的數(shù)據(jù)定義為變量 print data # 輸出變量 s.close() # 關閉連接
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37548.html
摘要:網(wǎng)絡編程學習本文主要介紹網(wǎng)絡通信,以及的通信例子網(wǎng)絡通信是嵌套字的意思,可以理解為與們間的在線會話。關于通信可以看這里簡單理解多線程下開啟一個對于服務端,需要做件事情開啟設置配置綁定端口幀監(jiān)聽,收發(fā)包多線程關于報錯模塊提供個函數(shù)。 http://homeway.me/ python網(wǎng)絡編程學習 本文主要介紹socket網(wǎng)絡通信,以及python的socket通信例子 ...
摘要:在任何類型的通信開始之前,網(wǎng)絡應用程序必須創(chuàng)建套接字?;谖募奶捉幼?,家族名又名基于網(wǎng)絡的套接字,家族名在和后續(xù)的版本中,支持的套接字有,,,。中的網(wǎng)絡編程在中主要是用模塊來實現(xiàn)基于套接字的網(wǎng)絡通信。 python學習記錄--網(wǎng)絡編程 1、套接字介紹 一臺機器上的不同進程之間進行通信可以利用隊列,管道等,但是不同機器之間的進程進行通信用隊列是不行的,解決這個問題就是網(wǎng)絡套接字。 套接...
摘要:可以是主機名地址或空字符串。如果傳遞空字符串,則服務器將接受所有可用接口上的連接。應為之間的整數(shù)被保留,它是接受來自客戶端連接的端口號,如果端口號,某些系統(tǒng)可能需要超級用戶權限。 簡評:我們已經(jīng)從「Python Socket 編程概覽」了解了 socket API 的概述以及客戶端和服務器的通信方式,接下來讓我們創(chuàng)建第一個客戶端和服務器,我們將從一個簡單的實現(xiàn)開始,服務器將簡單地回顯它...
摘要:對于網(wǎng)絡編程來說,免不了要用到模塊。表示另一端的地址。以上主要是針對流數(shù)據(jù)的編程。對于協(xié)議的數(shù)據(jù),處理略有不同。通過傳入對象調(diào)用來監(jiān)聽對象的文件描述符,一旦發(fā)現(xiàn)對象就緒,就通知應用程序進行相應的讀寫操作。 對于python網(wǎng)絡編程來說,免不了要用到socket模塊。下面分享一下個人對python socket的一些理解。 socket編程步驟 服務端創(chuàng)建一個socket,綁定地址和端...
摘要:創(chuàng)建創(chuàng)建通信接受套接字的數(shù)據(jù),與類似,但返回值是。發(fā)送數(shù)據(jù),將數(shù)據(jù)發(fā)送到,形式為,指定遠程地址發(fā)送,返回值是發(fā)送的字節(jié)數(shù)發(fā)送的報文是類型,發(fā)送的報文是類型,在發(fā)送前要記得編碼。 UDP 和 TCP 的區(qū)別 ? TCP UDP 連接性 面向連接 面向無連接 傳輸可靠性 可靠 不可靠 傳輸模式 流 數(shù)據(jù)報 應用場景 傳輸大量的數(shù)據(jù) 少量數(shù)據(jù) 速度 慢 快 T...
閱讀 1074·2021-11-22 13:53
閱讀 1626·2021-11-17 09:33
閱讀 2425·2021-10-14 09:43
閱讀 2901·2021-09-01 11:41
閱讀 2304·2021-09-01 10:44
閱讀 2974·2021-08-31 09:39
閱讀 1475·2019-08-30 15:44
閱讀 1885·2019-08-30 13:02