难道是serversocket的漏洞吗?(150分)

  • 主题发起人 主题发起人 cwt
  • 开始时间 开始时间
C

cwt

Unregistered / Unconfirmed
GUEST, unregistred user!
我用tserversocket发送大文件,采用应答的方式,在read事件中收到应答后发送下一帧,结果常常是发了一部分就自己中断了,并且报一个10053的错,但有的时候又能发完,而用c#.net自带的例子发送是没有问题的,请问怎么解决呢?急!
 
用Socket.SendStream
 
我用的是socket.sendbuf,有什么区别吗?
 
会不会是你服务端发出去的文件比较大,TCP它自己分包发送,而你客户端只收到了TCP分包后的第一个包,也就是第一帧它都没收全就返回了一帧,导致你服务端READ中的处理数据出问题了呀?
因为10053的错误是:
Software caused connection abort.
An established connection was aborted by the software in your host machine, possibly due to a data transmission timeout or protocol error.
不就是有可能是数据超时或者协议错误呀,你服务端收到的(read)数据错误。
 
to cjsam:
不可能的,我是自己分的包。1k字节一包。
 
to cwt 我用sendbuf做好好的,你sendbuf的时候sleep一下
 
我也做过这样的程序,一切正常啊。可能是指针的问题!!!!
 
我也做过,一切正常。

我的做法:在事件里反复读receivebuf直到返回-1
当返回非-1时反复调用sendbuf

注意数据指针就可以了
 
10053发生错误时通常是因为send时,通信方已关闭,或是虚拟回路连接超时。
 
首先谢谢大家的参与。
to lotuscheng:不可以sleep,因为速度太慢啦。
firstrose的方法是可行的,我试过了。thank you!!!
 
后退
顶部