全球FlexSim系统仿真中文论坛

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

作者: ldl89772962    时间: 2016-10-11 14:06
标题: flexsim 如何使用server命令建立服务器
如何使用server命令建立服务器
( u: t: i" `7 Q, l; T& Y* W& z' k- ?
代码如下,可是连接不上
  1. /**Custom Code*// Q: L5 u# [$ Z  p
  2. treenode current = ownerobject(c);: E1 e0 L4 `& H1 p4 P; B

  3. . F) s1 k$ W0 I/ n" ?# e3 Y
  4. senddelayedmessage(current,0.5,NULL);
    ( [4 m( ~9 J: R. b7 W+ O: D; ~/ q
  5. //SERVER:初始化
    * I; E: ?. b' l- G5 D
  6. if(getlabelnum(current,"startserver"))
    * m) Y1 h$ Y% J* U. I6 ^* @/ Y4 N
  7. {" `& ~# v1 y/ }& a( B
  8.         setlabelnum(current,"startserver",0);4 r) G4 `/ W! m) {8 f/ q  Q
  9.        
    $ F* `4 ^) y' y: Y9 _; y
  10.         if(getlabelnum(current,"socknum"))              //防止重复起server) m* _* \' ~  _3 ]; Q+ z
  11.                 return 0;% l- `2 p6 a1 g
  12.        
    $ s2 N8 w4 V* l# L
  13.         int m=getlabelnum(current,"serverport");' O" w0 A0 }$ ~! b: D, `
  14.      servercreatemain(m); 1 I. n! w& [: B+ p
  15.      
    9 r1 n. Q% z$ k" N# T4 ?
  16.      setlabelnum(current,"servernum",1);            //初始化成功后将值存入servernum
    # n) j$ F- e- s
  17.      pt("server()成功!");pr();
    * ]) S/ c9 \  c' E' y  o$ w+ u
  18. }5 y/ v2 A. F2 K, Y2 ^
  19.   E; @* y& f2 \+ x6 Y! |' \

  20. 2 m% [4 s7 N' X. }6 _1 D
  21. if(getlabelnum(current,"startserver"))
    # M) R) b4 l* N9 E
  22. {0 b+ p: i& r& ^) g
  23. & R% e* T% G4 {! t
  24.     int client = serveraccept(0); 6 g& [7 C+ g: t3 ~0 f* B; y; b
  25. }
    " F0 p! s% ~; z0 y7 K) c! {/ ~

  26. 3 O* }. C2 y2 q  x# D' o
  27. //关闭连接% e4 r, c4 w; b' Q" w
  28. int client = serveraccept(0);        
    + C* h* ~2 z; [( p! q4 Y* P; L3 e
  29. if(getlabelnum(current,"servercloseconnection"))
    - y0 u& X4 q  f4 f! V
  30. {
    0 w8 o$ R. C7 h' ~  D
  31.         setlabelnum(current,"servercloseconnection",0);# H" R+ @! l/ B0 r) d. ?. Y& G
  32.        
    ) Q, p' h8 j: U' `+ I& a
  33.         if(!getlabelnum(current,"servernum"))             //未启用server,则退出
    ' v. b& ~& o, {* R0 X& l% _
  34.                 return 0;. c3 ^- F) ]% c, E/ V- X# Y. w
  35.                
      z! k5 N+ x9 v( J, s) Y
  36.      servercloseconnection(client);6 o3 P, V  q; d( D. i7 X: A* w% t5 ^( T
  37.     ! b/ g8 e/ `- l% Q1 V4 ^5 P- X
  38.      pt("servercloseconnection()成功!");pr();   
    0 P* T( r6 i0 Z; b
  39. * l  y( C7 V+ _7 T' x+ o
  40. }5 H2 ~( r% n* s  M# Q1 `2 S6 h4 b
  41. 8 T# U7 P: `6 G, d1 ]  U
  42. //关闭SERVER
    2 k7 Q' ^* Y) e8 h. }& b+ d

  43. ; K$ n/ {' V1 Q: K% t
  44. if(getlabelnum(current,"serverclosemain"))
    % L# V  u! P' E$ I( i
  45. {
    ) s9 |( |$ ^! K; C5 Q) f
  46.         setlabelnum(current,"serverclosemain",0);
    ; }) K2 j4 z, G0 w2 ?
  47.         8 ~+ U" }: s- R
  48.         if(!getlabelnum(current,"servernum"))             //未启用server,则退出
    8 S& L# [7 c' u  \
  49.                 return 0;
    : w8 c3 Z5 }6 F. z  W' J
  50.                 : m. d) V: d$ K! `
  51.      serverclosemain();
    . t* O& \! l" e$ s/ n4 j& u
  52.      setlabelnum(current,"servernum",0);/ e# h8 V7 j$ T% e
  53.      pt("serverclosemain()成功!");pr();   
    " i# n$ B  y* G# \4 D' D
  54. }
    1 w  D% [% {) t0 N

  55. " w# E3 G) [3 F4 n+ z

  56. 0 w  L/ `) v& ^$ A" U0 \0 B7 t
  57. //接受信息# x% O. g3 ~! q, T, d/ Z+ x# S
  58. if(getlabelnum(current,"servernum"))                  //如果起了server服务(servernum标签非零)0 Z' B$ P/ Q7 M/ {5 `
  59. {
    - C7 l$ }+ _( J. j* h: U! Q
  60.         int servernum = getlabelnum(current,"servernum");
    / Z; G7 \6 r  H2 n
  61.         ) O- o# f6 @7 e' @3 F& ~
  62.         string buffer = "";3 h  V2 k5 T, l+ R, W4 R( ~
  63.         # K0 X, ^+ c# E2 u' [6 h
  64.         buffer = clientreceive(servernum, NULL, 1024, 1);  h9 j6 j0 S1 Q; @5 \9 q/ N
  65.         7 b" \. F+ ~( b& U
  66.         if(stringlen(buffer))
    ' d" |( F* L$ V& K8 \3 _2 C6 h
  67.                 setlabelstr(current,"serverreceive",buffer);
    " }# F/ L9 W) y

  68. ; H: A- Y& ^: d9 m/ ]7 e6 F
  69. }
    + |: ~1 k6 a# E% r6 i( P
  70. //发送信息
    6 {3 O: ]* l  Q; q& y5 H6 ?( P9 ?
  71. 9 E, q, G! |& J$ l) }. r
  72. ; v6 d0 z9 P4 R6 y( b4 K7 d9 x$ i
  73. if(getlabelnum(current,"servernum"))                     //如果起了SERVER服务(servernum标签非零)
    ) X- u" t) w0 ^/ n# n3 C/ C) h: {
  74. {
    0 D4 D0 B. ^8 V7 h9 L$ O
  75.         string buffer = getlabelstr(current,"serversend");0 r8 m8 H" f! R7 k! z0 e
  76.         - x3 I6 Q1 l) G) ^5 G
  77.         if(stringlen(buffer))' k2 U) j2 v% n5 c
  78.         {: N% g& N& z* o' V  s+ E0 @( [
  79.                 int servernum = getlabelnum(current,"servernum");
    1 X) }( S$ O* m6 f4 Q# V1 s
  80.                
    5 |3 k& S; N( T) S; W4 m5 e
  81.                 serversend(servernum,buffer);: M* i  d4 q' M3 M0 K' D
  82.                 setlabelstr(current,"send","");
    , o9 ^6 t- d! w2 _  c
  83.                 . p- b. [5 p* D8 t. U3 ]& d
  84.                 pt("serversend()成功!");pr();. u* D, i4 @! s  s
  85.         }, u2 q: @9 g8 J1 @$ y! `8 |/ L
  86. }
复制代码

作者: ldl89772962    时间: 2016-10-11 14:09
求教
作者: 慧娴亚伦    时间: 2016-10-11 18:52
您的目标是什么呢?这个是FlexSim的模型之间用socket链接的功能。
/ u) ]+ @" ]* b: ^! ?8 y连接不上的话有什么报错么?
作者: ldl89772962    时间: 2016-10-11 20:43
3# 慧娴亚伦 / D& k2 z1 @8 z) G7 D
陈老师,您好, O9 O$ L5 I" n- B* _+ S, D

2 k) E0 u$ H# t3 u& Q( ]) X& y0 _再将startserver标签设为1后,output console提示启动成功,可是tcp调试工具却无法连接FLEXSIM,好困扰!8 e  Y, d: p7 e6 b7 `. W( }
: S  y2 u9 ?! p8 @- D/ z3 u+ l% q
我将文件重新修改了一下,如附件。
作者: ldl89772962    时间: 2016-10-11 20:49
模型目标是能够利用flexsim建立服务器,并能通过tcp工具与外部通信
作者: 慧娴亚伦    时间: 2016-10-12 09:38
您能上传或者介绍一下您使用的tcp调试工具么?另外请尝试使用高版本软件,最好使用最新的2016版本。
作者: ldl89772962    时间: 2016-10-12 11:20
6# 慧娴亚伦 1 Z- d0 n/ H9 e. |4 ^

1 ~0 L. `4 j; }% c; [5 O. I老师,楼上附件里有调试工具,另外我找到原因了:在启动服务器时要将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