全球FlexSim系统仿真中文论坛

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

作者: ldl89772962    时间: 2016-10-11 14:06
标题: flexsim 如何使用server命令建立服务器
如何使用server命令建立服务器) W. ~! g9 k0 _0 k/ G
9 v3 `. A8 M9 H+ o$ S" p. o
代码如下,可是连接不上
  1. /**Custom Code*/
    $ m$ [8 K/ |5 ], E" B2 ^4 v! `
  2. treenode current = ownerobject(c);
    9 ^8 p7 a7 f5 \) Z' O( A7 p
  3. 8 u, [0 r# ^8 n+ U, s
  4. senddelayedmessage(current,0.5,NULL);
    $ E) H6 O" @. ^. k* d% D
  5. //SERVER:初始化& I& K0 p9 p# K& F3 y
  6. if(getlabelnum(current,"startserver"))7 L* u% T3 _" f0 J( e
  7. {
    $ b5 o) i% l! o! i
  8.         setlabelnum(current,"startserver",0);
    0 e5 h7 Z$ o3 A" l2 [# |
  9.         1 M3 W7 I& e! D0 n+ T9 X0 S/ N3 H
  10.         if(getlabelnum(current,"socknum"))              //防止重复起server
    ) F) a/ w: H; {0 k  F
  11.                 return 0;
    3 p; R3 a. l% u; n5 h, S
  12.         $ C; z& e9 v" F+ Y
  13.         int m=getlabelnum(current,"serverport");
    2 X8 @! ~6 {- q4 w3 S+ Y7 G) e, ~! H
  14.      servercreatemain(m);
    ' D- w7 \' ^$ I5 F! d
  15.      - p7 o2 ^0 S2 V% g2 q# U9 J' d
  16.      setlabelnum(current,"servernum",1);            //初始化成功后将值存入servernum
    / g' r$ S) G: C7 P; M" U- B7 A" ^
  17.      pt("server()成功!");pr();% z' N: O: P: X. |! K, u
  18. }7 \* X- H* F& Y$ C, x9 N
  19. 8 {& i/ O* T, K
  20. ' Q$ q' ]# P$ `' B! r" M: s$ @
  21. if(getlabelnum(current,"startserver"))
    9 x! C# z+ [1 k& N! L! I& ?9 Q, g
  22. {
    4 C$ {' ?( A) Z9 w  V

  23. : y/ I0 B% Q* }, p& b
  24.     int client = serveraccept(0); 1 ]% m  T9 w! u: U/ a2 j; `. v1 `* h( _
  25. }
    % x$ q1 m6 K4 ?6 j4 D4 g

  26. 8 X* k/ }0 r% r8 \2 U% X
  27. //关闭连接$ b" G# N2 x9 Y1 j" m0 Y1 S
  28. int client = serveraccept(0);        
    : c7 X8 s- j  w* D
  29. if(getlabelnum(current,"servercloseconnection"))5 U  |0 t4 w% Y- }
  30. {
    # r7 S2 s+ l/ `  _" u3 N5 R& r
  31.         setlabelnum(current,"servercloseconnection",0);
    + W3 j9 E- \3 W  \, W& W. S6 ]0 z
  32.        
    " h+ z5 e5 a' ]' N" b9 h" m% W
  33.         if(!getlabelnum(current,"servernum"))             //未启用server,则退出9 s3 ?5 C( Q  ^' H
  34.                 return 0;
    0 d! n) i. Y; F* u& {
  35.                
    6 N. l2 r% e: H0 L8 H8 A, S
  36.      servercloseconnection(client);
    4 c# q. |! R4 ^: U. ]! h0 t+ g
  37.    
    + f) y" K! G0 N' ]1 p! V
  38.      pt("servercloseconnection()成功!");pr();   
    ( y1 r' D! s% K' S8 ?8 v7 N

  39. & Y1 A7 d) X" V) S+ U+ F- V
  40. }
    8 @# J% |/ \1 ^: U+ v

  41. 5 C* l. H# f% j  u' R, v% P
  42. //关闭SERVER
    ; f- d3 L: H; m' C

  43. ) L3 o1 e; l' q: v4 [, K# t
  44. if(getlabelnum(current,"serverclosemain"))
    2 |; {, v2 w) m( H& n
  45. {
    , u& |, G  c$ V6 U3 L1 Q9 |
  46.         setlabelnum(current,"serverclosemain",0);9 Y) k3 i2 k- Z+ u% H0 ]
  47.        
    $ a8 {0 J' `) U% ], V/ g
  48.         if(!getlabelnum(current,"servernum"))             //未启用server,则退出
    1 @8 E0 C# a- r3 O
  49.                 return 0;
    ' c" G5 M( I+ |" m/ f, x5 d
  50.                 / n! C, c7 J) S: J# g$ T
  51.      serverclosemain();' v# I  E8 E( G  ~8 e
  52.      setlabelnum(current,"servernum",0);
    & {5 |% d  c$ r" q
  53.      pt("serverclosemain()成功!");pr();   
    1 Z) Q: E: V9 V# ~! n+ v
  54. }1 m: @/ f+ D' q- D6 K7 N

  55. & h; u- i* S/ a6 L5 _1 n5 P7 |

  56. 1 ?. M0 }% W0 o
  57. //接受信息9 ~" X4 E5 r$ i
  58. if(getlabelnum(current,"servernum"))                  //如果起了server服务(servernum标签非零)) l/ N0 p) ^% ?/ h
  59. {- k8 Y8 m8 n. }5 L* M0 \1 }
  60.         int servernum = getlabelnum(current,"servernum");
    ( k# b+ h' Z+ u" h
  61.         3 h1 _) j5 @: A% d7 g& m2 T
  62.         string buffer = "";  n, d- E9 ~; G2 p. H* X5 K
  63.         3 ~+ n  Y. `0 H# p/ y
  64.         buffer = clientreceive(servernum, NULL, 1024, 1);
    # m% V9 p, h6 t, [; d* w# z8 M
  65.         , M, ]8 T9 E7 e* c
  66.         if(stringlen(buffer))" ^) V: u  j5 S
  67.                 setlabelstr(current,"serverreceive",buffer);
    + X5 m! C* `1 M9 g* H4 O
  68. * m% e4 P, c0 y
  69. }
    8 v0 w1 s. @( J2 I: `
  70. //发送信息& m" P! q: j& V7 [9 R4 f. |
  71. ! A1 ]4 v2 N* n
  72. 8 w" A8 w& E3 z! \+ E6 `& X( p
  73. if(getlabelnum(current,"servernum"))                     //如果起了SERVER服务(servernum标签非零)3 ^  Z. B  u5 I0 n2 a; u* }- S* v
  74. {' ]* r1 D/ _) _& m
  75.         string buffer = getlabelstr(current,"serversend");+ D( i% \+ k, `3 k) c
  76.        
    * a3 P+ s- }7 _" U: f# a
  77.         if(stringlen(buffer))4 \6 R& }" X/ b9 J. \
  78.         {# M' ^- E/ q8 x( @! g6 x. J9 I
  79.                 int servernum = getlabelnum(current,"servernum");
      U3 A/ q) a* w2 Q/ i! |
  80.                 % Y0 V, s% m" W) o  @- r" t3 ~$ B! f' B
  81.                 serversend(servernum,buffer);! G9 ?$ ]4 p) [* s& U
  82.                 setlabelstr(current,"send","");' I- B. T. ]/ u" ?8 V2 w  {" F
  83.                 % O' r9 g* O5 z
  84.                 pt("serversend()成功!");pr();0 W8 J. D& H' X7 F" A' M
  85.         }
    * y) I' {3 V( v& X
  86. }
复制代码

作者: ldl89772962    时间: 2016-10-11 14:09
求教
作者: 慧娴亚伦    时间: 2016-10-11 18:52
您的目标是什么呢?这个是FlexSim的模型之间用socket链接的功能。5 \4 {; L; n9 g5 K; e% Z
连接不上的话有什么报错么?
作者: ldl89772962    时间: 2016-10-11 20:43
3# 慧娴亚伦 ! S8 Q' o: s1 }' n0 r
陈老师,您好
6 C, l  D' \+ D' C% [: O! D
/ v& @5 k9 o# _$ ?" k$ x* l$ o7 a4 J* d# i再将startserver标签设为1后,output console提示启动成功,可是tcp调试工具却无法连接FLEXSIM,好困扰!
6 F+ w1 I2 {' r$ d9 c2 H2 d3 I& x3 D: {' x2 E$ d; P7 S% u
我将文件重新修改了一下,如附件。
作者: ldl89772962    时间: 2016-10-11 20:49
模型目标是能够利用flexsim建立服务器,并能通过tcp工具与外部通信
作者: 慧娴亚伦    时间: 2016-10-12 09:38
您能上传或者介绍一下您使用的tcp调试工具么?另外请尝试使用高版本软件,最好使用最新的2016版本。
作者: ldl89772962    时间: 2016-10-12 11:20
6# 慧娴亚伦 - I) J4 C% \$ y1 F
( D# E3 b7 B! \  p3 D
老师,楼上附件里有调试工具,另外我找到原因了:在启动服务器时要将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