全球FlexSim系统仿真中文论坛

搜索
查看: 5229|回复: 4
打印 上一主题 下一主题

关于clientsend指令的请教

[复制链接]
跳转到指定楼层
1#
missman 发表于 2013-2-23 10:22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
库函数命令中有此命令,说明如下:
2 o/ R1 l7 n- T             clientsend(num socket,str message)" B2 w) p* ?$ \! c. m) X
            说明:此命令将信息从一个端口传递到指定的端口。
$ w/ C1 a* u; n- e( h' F) A( h2 `* Z# _# l: w+ s5 _
查了帮助的命令集,描述如下:
* Q9 l% C' {' J& X6 Q- R0 O  clientsend(num socket, str message[, num charlength])               
9 a* U0 V7 F) B- L) n9 z+ ^       Description:
3 Q, Z$ {: \& M3 K  x% f          This command sends a message across the socket specified as socket. The value passed as socket is the number returned by clientcreate(). The charlength is the length of the string being passed and is usually optional. Needed only if the string being sent has NULL characters in it.
3 Z' g1 r8 ]' x% I* h$ F' A2 _       Example:                % K0 I; j2 I( ]. E3 X( N  S
           clientsend(1,"REQ:service");
8 ]* @" z/ Y& a5 T: |% ]  D! E% s
- _  p# T1 K/ _6 y8 O: l  f0 s4 i5 ]2 g8 ~8 w
想请问一下举例中clientsend(1,"REQ:service");
; b7 |; _3 `* ~+ Q
; j! Y( K' \( U( T0 V; z问题1:  从端口1发送字符串"REQ:service",还是发送给端口1?2 X# P+ w' C2 V, k

) x5 J6 r3 c, Y; j问题2:  此端口指哪个端口?调试时可以在哪里看到结果?
' C/ o/ y0 R* R- A9 }* n6 x
1 k+ }* Y7 Q: C7 i2 y4 @拜托各位高手给与指点
2#
 楼主| missman 发表于 2013-2-23 10:33:01 | 只看该作者
我在官网上找到关于该命令的讨论,但是因为英语水平不好,基本不明白啊。有没有高手給与解读啊?8 a9 f8 u; Y6 g. p
http://www.flexsim.com/community ... ighlight=clientsend
3#
domcylai 发表于 2013-2-25 08:59:47 | 只看该作者
1# missman 7 p2 p4 @: B/ k2 o, Y% n% d  `

: ?* [. W7 K0 `! C1 C, l
" T! f' v5 @3 i: D- O. N首先必须了解socket是什么东西,根据百度百科上的解释:- z& V! I) B: g3 T5 Q& C6 E
  socket的英文原义是“孔”或“插座”。作为4BDS UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,象一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
) l6 N, O4 _! _) i6 o7 g! e& v! N) e7 h4 I; k3 l
而在Flexsim中,有关clientXXX()的语句中提到的这个词都跟这种技术有关。
4#
lisa527 发表于 2013-2-25 17:21:54 | 只看该作者
这个命令我没有用过,查阅了一些资料,希望能给你帮助。. c, B" r& M4 r
clientsend()语句的描述中出现了clientcreat()
2 m. g% m, e, s- }8 P0 @7 V这个命令是用于创建用于TCP/IP 协议的端口使用的。5 ~4 J* h) I/ {; w! g- X# q/ H, Z9 \
This command creates a new client socket that is set to communicate using the TCP/IP protocol.
5 }  W- O' {. f& |: A; H通过这个命令,可以在不同的服务器之间传递消息。- a  X9 Q) A& M2 _8 f) Q' S* Y
问题1:第一个是端口号,这个端口号是之前的命令clientcreate()返回的,如果要使用的话,要先用creat,比如写成:9 @* ^  s0 e; p
int port=clientcreat();  U7 u$ V5 x. y; c9 X2 L3 j
clientsend(port,  "REQ:service");5 Y7 k& S) {; I! y2 t

# v( V  w  r, H, B$ h( W* j1 P另外,在flexsim中,是以节点来排列的,就是说,如果你只创建了一个socket,或者创建的第一个端口,就可以用1。
9 B. a3 J+ b9 k  S, s* r同样的情况,如果你的实体只有一个标签,引用标签,比如在getlablenum()里面,也可以不写标签名而写1.
; F% x: c! f2 W  K0 j3 r7 b2 U2 l# k2 ?, F. L& M
问题2:
+ Y. ^5 l, v) Z$ C1 b虽然很想回答,但是涉及到至少两台计算机我没有做过。
5#
 楼主| missman 发表于 2013-2-28 13:45:14 | 只看该作者
感谢版主与元老的解答。7 P* s. g' P# X9 Y+ ~
看了你们的回复,了解很多有用的知识点。
! ~) T5 l5 l, u
8 z3 e  V5 c: k, k9 D我希望的目的是另外一个软件(labview)与flexsim装在同一台电脑上,希望两个软件之间能够通过电脑内部的端口(串行或并行)直接互相传递数据。不想用数据库。. H% Z; z/ [8 I/ O" u& k6 s+ W9 R

% c: ?2 `7 e2 P) n不想用数据库原因:我现在用excel作为数据库的话,flexsim调用数据库时需要打开表格,然后另一个软件(labview)调用时也需要打开同一个表格,这样系统就报错,且两边都不能连接数据库了。3 k' j. L$ c  L/ b2 r

: F: I3 v2 O' h7 H1 J  Z# L因此在命令表中一个一个找找能不能有所发现。
" G" w+ |: |/ T0 r; p7 s; H
0 T) _* R0 F! J: `+ y0 ^各位高手如果能解决我这个问题也好啊。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|全球FlexSim系统仿真中文论坛 ( 京ICP备14043114号-2 )

GMT+8, 2025-5-11 01:14 , Processed in 0.068223 second(s), 13 queries .

Powered by Discuz! X3.3© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表