flexsim实现socket连接
生活随笔
收集整理的這篇文章主要介紹了
flexsim实现socket连接
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
1.基礎信息
2.flask基本語法及命令
3.傳輸示例
4.代碼
5.python與flexsim互聯
1.基礎信息
- 軟件版本 19.0.0
- 基于flexsim?User Commands 及Scrip實現
- 實現信息收發及與python的通信
- 代碼可復用于多種場合的業務。
2.flask基本語法及命令
客戶端部分:
socketinit (); ?//初始化windows后臺程序clientcreate ();//創建客戶端socket,并返回一個值。如果創建成功,則返回一個非0正值,否則返回0。后續的連接、收發消息都需要這個值。clientconnect (num socket, str hostname, num port)//連接服務器,三個參數分別是clientcreate ()返回的值,服務端的IP地址或本地電腦全名,服務端監聽的端口,連接成功則返回一個非0正值,否在返回0。clientreceive (num socket, str buffer, num buffersize, num noblock[1/0])//接收服務端發送到socket的消息,返回值為一串字符串。clientsend (num socket, str message[, num charlength])//發送消息到socket,如果成功發送,則返回一個非0正值,否則在返回0clientclose (num socket);//關閉當前socketsocketend ();//關閉所有從socketinit()開始建立的socket,即斷開所有連接服務端部分:
serverclosemain () ;//關閉服務端server及所有打開的連接,一般再模型開始時使用,確保所有連接都已關閉。socketinit () ;//初始化windows后臺程序servercreatemain (int port) ;//創建指定端口的服務端socket,該端口與客戶端的端口保持一致。serveraccept (int noblocking) ;//監聽客戶端接入,如果有客戶端接入,則返回非0正值,否在返回0。參數noblocking=1,如果沒有客戶端接入,模型不會停止,但會返回0值;noblocking=0,模型會停止,等待客戶端接入后繼續運行,并返回一個非0正值。注:嘗試在noblocking=1的情況下連接客戶端都以失敗告終,暫未獲知其中原因。serverreceive (int connection, char *buffer, int bufsize, int noblocking)//接收客戶端發送到socket的消息,返回值為一串字符串。serversend (int connection, char* message [, num charlength] )//發送消息到socket,如果成功發送,則返回一個非0正值,否則在返回0。servercloseconnection (int connection)//關閉當前服務端連接。socketend ()//關閉所有打開的socket連接。3.傳輸示例
客戶端部分:
?
?
服務端部分:
4.代碼
treenode connection = assertsubnode(node("/Tools",model()), "client", DATATYPE_NUMBER);string hostname = parstr(1); int portnum = parval(2); int client = 0; if(socketinit()) {client = clientcreate(); } if(client) {if(clientconnect(client,hostname,portnum)){setnodenum(connection,client);return 1;}else{msg("Client Error", "Failed to connect to server.");if(!clientclose(client))msg("Socket Error", "Failed to close client socket.");return 0;} } elsemsg("Socket Error", "Failed to create client socket."); return client; int portnum = parval(1); treenode connection = assertsubnode(node("/Tools", model()), "client", DATATYPE_NUMBER); if(socketinit()) {servercreatemain(portnum);int client = serveraccept(0);if(!client){serverclosemain();msg("Client Error", "No client connection made.");return 0;}else{setnodenum(connection, client);return 1;} } else {msg("Socket Error", "Socket not initiated.");return 0; }5.python與flexsim互聯
利用python的socket模塊,可以實現一個基礎的服務端,對flexsim的數據實現接收
傳入的信息:
?
?回傳的信息:
import socketbacklog=5 sk = socket.socket() sk.bind(('127.0.0.1',8888)) sk.listen(backlog)print("開始等待接受客戶端數據----") while True:conn, addr = sk.accept() # 獲取客戶端地址print(conn, addr)print("客戶端來數據了")while True:data = conn.recv(1024) # 接收數據print("接受的數據:", data)if not data:print("client has lost")breakconn.send(data.upper()) # 返回數據serve.close() treenode textobj = node("/Text4",model()); double client = getnodenum(node("/Tools/client",model())); clientsend(client,"17.1:0.1.1"); string input=clientreceive(client,NULL,15,1); if(!comparetext(input,"")) // If an empty string was received, then the client has not sent any data yet. {msg("Access succeed",input);setlabelstr(textobj,"text",input); return input; } return 0;總結
以上是生活随笔為你收集整理的flexsim实现socket连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vista优化大师
- 下一篇: Python:Kendall tau相关