现在我客户端可以连接上服务器,而且在服务器那边可以不断接收客户端发送的数据,现在如果客户端不返回结果,我是否能知道客户端接收多少数据?用socket能否向抓包工具一样拿到ack中的len?

解决方案 »

  1.   

    这个应该在发送的数据中包括数据长度,没有必要再跑到底层去抓什么ack.
    简单地说应该服务端和客户端约定同样的数据格式和传输顺序。复杂点双方应该建立通信协议,比如http, ftp等这些协议,就是解决双方通信的问题。你也可以根据你的业务,设计比较简单的回话方式。
      

  2.   

    我感觉是我没描述清楚。现在就是说,我客户端发送数据包给服务端,服务端不回复发送结果,这边客户端能否知道成功发送多少数据包?
    tcp协议已经做了这事了,你发送的数据包,他都要ack的,没有ack的就会重发
      

  3.   

    我感觉是我没描述清楚。现在就是说,我客户端发送数据包给服务端,服务端不回复发送结果,这边客户端能否知道成功发送多少数据包?
    tcp协议已经做了这事了,你发送的数据包,他都要ack的,没有ack的就会重发
    那么怎么获取这个ack中的信息?
      

  4.   

    我感觉是我没描述清楚。现在就是说,我客户端发送数据包给服务端,服务端不回复发送结果,这边客户端能否知道成功发送多少数据包?
    tcp协议已经做了这事了,你发送的数据包,他都要ack的,没有ack的就会重发
    那么怎么获取这个ack中的信息?
    java的socket应该是封装了这层逻辑的,对外不暴露的(也有可能调用操作系统api),我不太清楚是否能做到你说的这一点我觉得你可以在此之上,把你的需要传输的数据分块,做到类似功能的
      

  5.   

    我现在客户端用flash做的,我查一下api好像没有封装这个,现在flash也没有源码。服务端用的java
      

  6.   

    我们开发的程序是属于应用层的,应用层需要人为的自定义协议去控制业务流程,ack中的数据应该是网络层的,如果不暴露api是拿不到的,c#里倒是有拦截网络层数据的api,也是通过第三方包,可能原理上和抓包工具类似吧