我们这里有个程序,后台是java 写的,前台是vb写的,它们通过socket通讯。前台发送请求数据包给后台,后台处理完毕后,把结果数据包返回前台,在后台日志中记录已经给前台发送。但前台没有反应。然后前台以同样方式进行其他业务处理,工作正常。工作完成后,原先没有接受到的数据包又被接受到,并在前台进行了处理,检查日志,后台并没有从新发送。请教为何会出现这种情况?前台每发送一次请求数据包都要把socket关掉,重新连接。后台以字节方式发送,前台以字符串方式接受。前台是windows9X,后台是windows2000.

解决方案 »

  1.   

    //前台每发送一次请求数据包都要把socket关掉//'
    你在后台发送信息后,再延迟一下,再关闭,应该可以
      

  2.   

    你关掉一次socket的时候可能前台正在接收数据,关闭发起者最好是前台,等数据接收完毕 后关闭
      

  3.   

    发送的时候加一个do events。这个就可以将缓冲区的数据发送了。
    不知道是不是这个问题。
      

  4.   

    未接受到的数据包应该是没有丢掉,否则在其他工作完成后就不会再收到了。我对vb中的socket工作原理不是太了解,感觉数据包是收到了,但不知放在了哪里。不知是不是这样。
      

  5.   

    VB里的一收到数据就会触发DataArrival事件.
      

  6.   

    主要原因是java和vb的socket机制完全不同造成的
    jave的socket采用的协议不是标准的tcp或者udp而是一种自己内部的协议(这样实现是为了跨平台,因为unix和linix没有socket)他是模仿tcp和udp因此出现了这种情况java会关闭vb或者是vb的socket