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