项目是基本流程:别人把采集到的数据处理后,按照结构(1)方式传给我(在同一台机器上),我要做的工作是,把他给我的数据,再次按照一个结构(2)封装,且封装后添入发送数据队列。
   问题:
1、若我声明一个结构(2)的对象,用来接受别人传给我的数据,我怎样才知道,数据恰好添完一个单元,然后把它添加到发送队列?
2、与传送给我的那边,怎样协调好数据同步问题,(因为我们这个项目是一个实时采集系统,数据是实时不断传入的)谢谢你的指点!

解决方案 »

  1.   

    to zhzhh1972(张san):您好!
    我数据接受方端,也是我做,因为我现在做的是真个局域网的通信管理模块,转换成DDL后,让其他人调用。单元的具体大小,应该可以定,我可能采用定长的结构体
    呵呵,不好意思,对于您所说的红绿灯信号量问题,能否再详细点?谢谢您的再次指点!
      

  2.   

    CreateSemphore();
    WaitForSingleObject(); //等待信号灯
    ReleaseSemphore();   //释放信号灯
      

  3.   

    如果是单线程,不需要信号灯的!
    select判断是否有数据!recv接收定长数据,然后转换到结构(2)......与传送方不需要做数据同步吧?你用什么方式传的数据,socket?
      

  4.   

    TO alanwang_(alan):您好!  与传送给我的那边,最好同步,因为这个系统需要很强的实时性;我接到数据后采用SOCKET方式发给LAN中的其他一些后台节点。
       我接受数据时,是采用单线程。不好意思,“select判断是否有数据”能否具体点,小弟真的不懂,谢谢您的指点!
      

  5.   

    不好意思,补充一些: 我还有一个问题不是很清楚,希望高手们指正!我整个程序除主线程外,还有一个专门用于给LAN中其他节点发送数据的发送线程,对于上述问题(在同一台计算机上接受别人给我的数据时,然后把数据添加到发送队列中,处在主线程中),应该算单线程不?
      

  6.   

    接收数据是用什么?本机接收应该不是socket吧!
    我上面说的select是socket函数
      

  7.   

    用overlapped,数据处理交给后台做
      

  8.   

    本机接受我也觉得应该不是用socket,说实在的,但我也不清楚应该怎样做,还望大家指点!这是我初次编程,绝对菜鸟一个,希望大家多多帮忙!
      

  9.   

    用管道好了,管道对象属于内核对象,可以用WaitForSingleObject之类的函数我试过本地管道,效率不错
    唯一一点就是缓冲大小是固定的,而且管道使用nonpage内存,所以不宜开太大,具体看msdn
      

  10.   

    工具就是指socket、命名管道之类的东东!
    管道挺好用的,很方便也很简单,和文件差不多!你可以看MSDN CreateNamedPipe
    如果你和别人是同一个进程,用匿名管道。不同进程用命名管道!pipe在本机上比socket好,不过socket也是可选的。当然还有好多种其它方法
      

  11.   

    谢谢您的指点,我看看MSDN对了,大侠,有没这方面的代码啊?
    有的话,请发[email protected],谢谢!