當前位置:首頁 » 編程語言 » udp伺服器python

udp伺服器python

發布時間: 2022-06-09 02:40:34

python SocketServer UDP接收forking問題 ,這個錯在哪裡

如果你打算編寫多進程的服務程序,Unix/Linux無疑是正確的選擇。由於Windows沒有fork調用,難道在Windows上無法用Python編寫多進程的程序?


由於Python是跨平台的,自然也應該提供一個跨平台的多進程支持。multiprocessing模塊就是跨平台版本的多進程模塊。


multiprocessing模塊提供了一個Process類來代表一個進程對象,下面的例子演示了啟動一個子進程並等待其結束:


importos
#子進程要執行的代碼
defrun_proc(name):
print'Runchildprocess%s(%s)...'%(name,os.getpid())
if__name__=='__main__':
print'Parentprocess%s.'%os.getpid()
p=Process(target=run_proc,args=('test',))
print'Processwillstart.'
p.start()
p.join()
print'Processend.'


執行結果如下:

Parentprocess928.
Processwillstart.
Runchildprocesstest(929)...
Processend.

創建子進程時,只需要傳入一個執行函數和函數的參數,創建一個Process實例,用start()方法啟動,這樣創建進程比fork()還要簡單。


join()方法可以等待子進程結束後再繼續往下運行,通常用於進程間的同步。

Ⅱ python3套接字udp設置接受數據超時

Sometimes,you need to manipulate the default values of certain properties of a socket library, for example, the socket timeout.

設定並獲取默認的套接字超時時間。

1.代碼

1 import socket
2
3
4 def test_socket_timeout():
5 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
6 print("Default socket timeout: %s" % s.gettimeout())
7 # 獲取套接字默認超時時間
8 s.settimeout(100)
9 # 設置超時時間
10 print("Current socket timeout: %s" % s.gettimeout())
11 # 讀取修改後的套接字超時時間
12
13
14 if __name__ == '__main__':
15 test_socket_timeout()
2. AF_INET和SOCK_STREAM解釋

1 # 地址簇
2 # socket.AF_INET IPv4(默認)
3 # socket.AF_INET6 IPv6
4 # socket.AF_UNIX 只能夠用於單一的Unix系統進程間通信
5
6 # socket.SOCK_STREAM(數據流) 提供面向連接的穩定數據傳輸,即TCP/IP協議.多用於資料(如文件)傳送。
3.gettimeout()和settimeout()解釋

1 def gettimeout(self): # real signature unknown; restored from __doc__
2 """
3 gettimeout() -> timeout
4
5 Returns the timeout in seconds (float) associated with socket
6 operations. A timeout of None indicates that timeouts on socket
7 operations are disabled.
8 """
9 return timeout
10
11
12 def settimeout(self, timeout): # real signature unknown; restored from __doc__
13 """
14 settimeout(timeout)
15
16 Set a timeout on socket operations. 'timeout' can be a float,
17 giving in seconds, or None. Setting a timeout of None disables
18 the timeout feature and is equivalent to setblocking(1).
19 Setting a timeout of zero is the same as setblocking(0).
20 """
21 pass
22 # 設置套接字操作的超時期,timeout是一個浮點數,單位是秒。值為None表示沒有超時期。
23 # 一般,超時期應該在剛創建套接字時設置,因為它們可能用於連接的操作(如 client 連接最多等待5s )
4.運行結果

1 Default socket timeout: None
2 Current socket timeout: 100.0

Ⅲ PYTHON UDP/TCP 伺服器與客戶端如何連接

你沒有編程經驗,一來就搞網路編程,你是天才嗎?
先從編程的最基本概念開始學起吧。先買本《python基礎教程》把前面基礎的部分讀懂了,上機實踐。遇到錯誤信息了,自己去網路查找錯誤的原因。

至於你說的這幾個函數,幫助手冊上都有詳細說明的。
變數A=5,不能直接通過網路傳遞,網路只能傳二進制數據。你的變數需要串列化,比如變成字元串或者base64編碼,才能傳遞,到了服務端要根據你事先定義好的協議去解析,才能重新得到這個變數。

Ⅳ python怎麼用udp協議來log

from socket import *
ADDR = ('' , 21567)
udpSerSock = socket(AF_INET,SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
data, addr = udpSerSock.recvfrom(1024)
print data
udpSerSock.close()
客戶機:from socket import *
ADDR = ('localhost', 21567)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True :
data = raw_input('> ')
udpCliSock.sendto(data, ADDR)

udpCliSock.close()

實現的功能也很簡單 , 伺服器斷運行到recvfrom 函數時 , 就處於堵塞狀態 , 等待消息來臨.
這時候 , 客戶端向 'localhost' 這個地址發送了一段數據 (localhost 在Python 代表 127.0.0.1 )
recvfrom 接收到消息 , 然後將其列印出來 , 然後新的一輪循環開始...

Ⅳ python實現多地址UDP同時,高效接收

每個udp socket只能bind到一個本地埠上。你可以多搞幾個,然後加select就可以了。

Ⅵ python 中怎麼用UDP模擬實現ftp伺服器 與客戶端

這個應該是可以實現的。你可以使用一個twist的包。
用非同步方式實現通訊。
然後再將FTP協議中的幾個方法,全部用UDP封裝一下。不過要做包的檢驗。
還有順序。

Ⅶ python socket udp編程的小問題

從錯誤代碼an
integer
is
required來看,需要提供一個整形。
要做的是改成
port0
=
21567,而不是
port0
=
』21567『。
希望能幫到你,有疑問請追問!

Ⅷ python udp多線程的問題

for out_port in self.output_port:
soc = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
soc.connect(("localhost",out_port))
_output.append(soc)

不要用output_port,用input_port。
你這里是往input_port發送數據,不需要關心自己的port,而是對端的port

Ⅸ python設計UDP通信時,recvfrom()中的參數是什麼意思

socket.recvfrom(bufsize[, flags])

Receive data from the socket. The return value is a pair (bytes, address) where bytes is a bytes object
representing the data received and address is the address of the socket
sending the data. See the Unix manual page recv(2) for
the meaning of the optional argument flags; it defaults to zero. (The
format of address depends on the address family — see above.)

recvfrom(1)就是從緩沖區讀一個位元組的數據

熱點內容
95美女秀加密房間 發布:2024-11-01 09:00:55 瀏覽:754
java讀取xlsx 發布:2024-11-01 08:54:47 瀏覽:724
蘋果安卓系統英文叫什麼 發布:2024-11-01 08:54:37 瀏覽:761
php日期計算 發布:2024-11-01 08:52:18 瀏覽:443
怎麼壓縮rar 發布:2024-11-01 08:45:50 瀏覽:660
按位與java 發布:2024-11-01 08:39:44 瀏覽:55
鳥哥linux私房菜伺服器 發布:2024-11-01 08:26:19 瀏覽:943
tomcat在linux下配置 發布:2024-11-01 08:09:57 瀏覽:95
工行密碼器怎麼買東西 發布:2024-11-01 08:00:02 瀏覽:712
查找子串的演算法 發布:2024-11-01 07:58:25 瀏覽:215