全球FlexSim系统仿真中文论坛

标题: flexsim 如何使用server命令建立服务器 [打印本页]

作者: ldl89772962    时间: 2016-10-11 14:06
标题: flexsim 如何使用server命令建立服务器
如何使用server命令建立服务器6 N9 ~0 k! R4 N% }9 O
* L% ]2 @  h  o; x
代码如下,可是连接不上
  1. /**Custom Code*/
    . |' @& Y. B9 l9 w$ w
  2. treenode current = ownerobject(c);$ N  J" I  d$ @4 [) N
  3. 8 L! q1 d6 e  @4 F+ g2 T
  4. senddelayedmessage(current,0.5,NULL);& Z* r) y& v- g3 T1 j
  5. //SERVER:初始化0 r6 J$ D9 [3 q
  6. if(getlabelnum(current,"startserver"))
    1 l( K& T  F$ |, I
  7. {" u1 ^9 \. x& I7 S4 X2 q
  8.         setlabelnum(current,"startserver",0);
    0 I8 w* i5 w8 J0 C
  9.        
    " H4 l7 f9 d! f
  10.         if(getlabelnum(current,"socknum"))              //防止重复起server
    6 R. `( w2 \' X7 \! J0 x( b
  11.                 return 0;
    / g% `3 T! a9 L: e7 s& v. k
  12.        
    4 E( u7 x) O% `( Q3 V% H
  13.         int m=getlabelnum(current,"serverport");
      B7 j5 x  W, U5 J6 n
  14.      servercreatemain(m); 5 m; l: s9 |9 X: i$ |6 ^- w
  15.      
    ) f' G: |( s) X0 D; J
  16.      setlabelnum(current,"servernum",1);            //初始化成功后将值存入servernum! f2 t& u- o; [& n* t; K
  17.      pt("server()成功!");pr();
    ( h! @. S$ U* R* E7 l7 X) V
  18. }# \7 o$ I1 V$ d" O

  19. : q* u% k& K& P! E2 ]% l% S

  20. $ u- C- r0 N/ S1 K: M
  21. if(getlabelnum(current,"startserver"))
    $ w$ H" s. Y1 p
  22. {" |0 n. L* m+ V3 G3 p

  23. - R& S: {9 F. l3 a
  24.     int client = serveraccept(0);
    * N" D/ G& d$ x9 D
  25. }- y+ P4 X4 U! ^( O
  26. 1 z( ]; X% o3 ~$ U' \' k
  27. //关闭连接: ~5 V( |* H, J; @" s& @1 s" B. r
  28. int client = serveraccept(0);        
    ; Z+ Q- h$ [: E) b* }5 ?3 x0 ~
  29. if(getlabelnum(current,"servercloseconnection"))$ o  Z2 y( y$ v
  30. {
    : ?  W3 A4 C* [4 W+ M2 d
  31.         setlabelnum(current,"servercloseconnection",0);$ O, ]! a  M8 r: X+ ~
  32.        
    % V4 `6 E4 o9 ~
  33.         if(!getlabelnum(current,"servernum"))             //未启用server,则退出
    + O$ s. n( c( B4 n9 r
  34.                 return 0;: M: U8 F% i- U# n" ^; ~
  35.                
    0 v( B0 C. z' |+ L7 v/ g
  36.      servercloseconnection(client);3 Y! @; w# x/ w9 k9 D
  37.     & X; r, r+ i$ I) S5 [
  38.      pt("servercloseconnection()成功!");pr();   
    / Y* m. N+ g. T9 ?: ]4 |

  39. 5 M1 P, S5 L+ P% F& I- H% `
  40. }: ~& N+ Q% m' F# _
  41. $ a( Q4 R0 W$ E3 {
  42. //关闭SERVER
    ! H. B3 x4 K* J7 S+ g  w
  43. 2 U( J4 V  w" @. C, ~; l% N
  44. if(getlabelnum(current,"serverclosemain")), u& x$ K! o$ }* }+ H
  45. {
    0 i5 }& o# `$ e* X1 S! I
  46.         setlabelnum(current,"serverclosemain",0);5 i, \% ^. A) T' Y' @. W& y9 Q
  47.         ( d* d! L4 W8 x+ j0 u
  48.         if(!getlabelnum(current,"servernum"))             //未启用server,则退出
    & |0 Y6 f( x6 j1 |8 w* J; B) i
  49.                 return 0;
    ( _* a& z9 K  v
  50.                 + ?( H/ Y5 ~7 Q! Q4 Q
  51.      serverclosemain();
    : b8 @( q5 R" q- [- b
  52.      setlabelnum(current,"servernum",0);
      y% V, p) q, G
  53.      pt("serverclosemain()成功!");pr();   
    , |: L) S7 z! }8 k8 d6 M- Q; q
  54. }" Y. C8 ?2 s( Q, G
  55. # a2 H0 n, z# d3 b

  56. % @! w+ I+ p- a" a+ P# E3 r
  57. //接受信息
    0 w7 t& z" h1 B/ S% O8 O
  58. if(getlabelnum(current,"servernum"))                  //如果起了server服务(servernum标签非零)! f8 `: v0 m0 q, a3 |8 c. `
  59. {
    . f- e* d: p4 z' w' c% O% E; h' [+ J
  60.         int servernum = getlabelnum(current,"servernum");( b8 J3 S' k* }3 K7 U, X' R
  61.        
    5 m, ~, A3 h6 e$ O
  62.         string buffer = "";  c' x8 b7 A' m. N' w& K0 c+ D1 g' v5 F
  63.        
    ( l; @! w0 V$ ]- ]$ n( G# j
  64.         buffer = clientreceive(servernum, NULL, 1024, 1);
    ) a. G6 F4 {; H2 I+ O+ j/ @3 v- D6 R
  65.        
    5 e5 O0 L( G$ B3 x  v% Z* X% o
  66.         if(stringlen(buffer))* [" y. h' @/ I. s3 m) B
  67.                 setlabelstr(current,"serverreceive",buffer);! }+ t+ l1 E$ {

  68. 9 i5 r9 F9 G% y0 Q* G
  69. }  M7 x# T9 o9 B" O* ?% Y& l! y
  70. //发送信息
    . j& w( V" d: @. i) Q. q) o3 h4 O

  71. 8 ]5 ]! U1 v0 U( I, X

  72. " t: `6 }- t) g+ n  |$ d
  73. if(getlabelnum(current,"servernum"))                     //如果起了SERVER服务(servernum标签非零)' ^$ M8 T& w% n) i& W2 z  j1 W
  74. {
    5 K$ X+ V$ `- ^' Y2 E# X
  75.         string buffer = getlabelstr(current,"serversend");3 x6 E5 f5 e& U& w3 U/ L
  76.         $ `) v) ^. Y% f, Y' P9 Y" a  P
  77.         if(stringlen(buffer))8 Z2 @. R) H- Y* D8 B
  78.         {- t6 P" A' m  L* X* h
  79.                 int servernum = getlabelnum(current,"servernum");4 R1 L; A" ~; d$ T& [0 k
  80.                
    5 R% I" a) p5 ?: r2 c$ o8 _) G
  81.                 serversend(servernum,buffer);
    # V3 f) z7 ^5 \& h: L7 E6 O
  82.                 setlabelstr(current,"send","");
    : f- a. |! G+ e* k
  83.                
    8 m1 {, k/ r4 y6 R
  84.                 pt("serversend()成功!");pr();
    & o9 X! P2 S8 O4 \' f& S6 w" _5 p
  85.         }
    # k& c5 h# b  O
  86. }
复制代码

作者: ldl89772962    时间: 2016-10-11 14:09
求教
作者: 慧娴亚伦    时间: 2016-10-11 18:52
您的目标是什么呢?这个是FlexSim的模型之间用socket链接的功能。- c# V# m# G# `
连接不上的话有什么报错么?
作者: ldl89772962    时间: 2016-10-11 20:43
3# 慧娴亚伦   I6 u, o- b+ |* U3 q( _
陈老师,您好6 b+ a  H2 r- \$ W
* P! n; v  T) g: _8 H$ P2 O$ b
再将startserver标签设为1后,output console提示启动成功,可是tcp调试工具却无法连接FLEXSIM,好困扰!
$ h3 I6 O1 L7 {, C0 P
/ r2 Z8 z3 p3 W( K! y我将文件重新修改了一下,如附件。
作者: ldl89772962    时间: 2016-10-11 20:49
模型目标是能够利用flexsim建立服务器,并能通过tcp工具与外部通信
作者: 慧娴亚伦    时间: 2016-10-12 09:38
您能上传或者介绍一下您使用的tcp调试工具么?另外请尝试使用高版本软件,最好使用最新的2016版本。
作者: ldl89772962    时间: 2016-10-12 11:20
6# 慧娴亚伦
1 \  a! N% s$ ?. s' Q" i; O: n+ @9 m
老师,楼上附件里有调试工具,另外我找到原因了:在启动服务器时要将socket初始化。
作者: ldl89772962    时间: 2016-10-12 11:24
附件为经测试成功的文件
作者: ldl89772962    时间: 2017-3-26 01:28
lllflflf
作者: 我很强壮    时间: 2017-6-13 01:49
谢谢分享




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3