SUMO Traci多客戶端執行

2021-10-08 05:17:36 字數 2157 閱讀 3057

參考sumo官網教程

1、對於路網,路網內交通燈以及路網內的車輛交通(流)等的設定,請參考其他高手,這裡簡單描述如何使用sumo traci多客戶端控制sumo-gui執行。

2、sumo traci的多客戶端執行的優勢如:

3、我這裡以兩個客戶端為例,實現sumo traci多客戶端執行。直接上**,會更清晰。

# client1

import os, sys

import traci

# 找到sumo或sumo-gui的環境

if'sumo_home'

in os.environ:

tools = os.path.join(os.environ[

'sumo_home'],

'tools'

)else

: sys.exit(

"please declare environment variable 'sumo_home'"

)'c:'

, os.sep,

'whatever'

,'path'

,'to'

,'sumo'

,'tools'))

port =

8813

# 設定客戶端埠號

sumobinary =

"d:\\program files (x86)\\eclipse\\sumo\\bin\\sumo-gui.exe"

sumocmd = traci.start(

[sumobinary,

"-c"

,"town05.sumocfg"

,"--num-clients"

,"2"

], port=port)

traci.setorder(1)

# 設定客戶端順序,數字任意,但各客戶端順序不可以相同

defmain()

:# 兩個客戶端都需要持續呼叫simulationstep()函式,才可以讓sumo-gui持續執行

while traci.simulation.getminexpectednumber(

)>0:

traci.simulationstep(

)"""這裡自定義traci的其他功能"""

traci.close(

)if __name__ ==

'__main__'

: main(

)

# client2

import os, sys

import traci

# 找到sumo或sumo-gui的環境

if'sumo_home'

in os.environ:

tools = os.path.join(os.environ[

'sumo_home'],

'tools'

)else

: sys.exit(

"please declare environment variable 'sumo_home'"

)'c:'

, os.sep,

'whatever'

,'path'

,'to'

,'sumo'

,'tools'))

traci.init(

8813

)traci.setorder(2)

# 設定客戶端順序,數字任意,但各客戶端順序不可以相同

defmain()

:# 兩個客戶端都需要持續呼叫simulationstep()函式,才可以讓sumo-gui持續執行

while traci.simulation.getminexpectednumber(

)>0:

traci.simulationstep(

)"""這裡自定義traci的其他功能"""

traci.close(

)if __name__ ==

'__main__'

: main(

)

以上兩個traci客戶端沒有設定與獲取任何traci功能,想要設定與獲取sumo-gui的值,可以在main函式下自定義或重新設定其他函式、類與命令,且二者客戶端執行順序無關緊要,只有在兩個客戶端都成功執行起來之後,方可成功載入路網檔案。

TCP通訊,多客戶端通訊(客戶端 服務端)

客戶端和伺服器間的交流,客戶端傳送資訊,伺服器接收到,並返回資訊 長連線建立socket連線服務端 指定ip位址,埠號 通過ip位址找對應的伺服器 呼叫socket的getinputstream 和getoutputstream 方法獲取和服務端相連的io流 輸入流可以讀取服務端輸出流寫出的資料 輸...

socket程式設計 TCP IP 多客戶端

支援多客戶的client server程式 前面的client server程式只能實現server和乙個客戶的對話。在實際應用中,往往是在伺服器上執行乙個永久的程式,它可以接收來自其他多個客戶端的請求,提供相應的服務。為了實現在伺服器方給多個客戶提供服務的功能,需要對上 面的程式進行改造,利用多執...

QTcpServer實現多客戶端連線

qtcpserver使用請見 qtcpsocket qt使用tcp通訊實現服務端和客戶端 qtcpserver類預設提供的只有無引數的newconnection的訊號,這樣雖然知道有人連線了,並且可以通過nextpendingconnection獲取連線的socket,但並不便於管理,尤其是在連線斷...