关于WINSOCK的编程问题(100分)

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

coolking

Unregistered / Unconfirmed
GUEST, unregistred user!

用onRead事件触发接受数据

接受数据时用socket.recv( .....)

为什么只能收到对方传送过来的第一个数据包?




 
不会吧, 详细一些.
 
当然了,一次接受一个数据包。
但不用担心会丢失,若对方一次发了10次数据
你就会触发10次OnRead,一次收一个正好。

Socket.recv()是什么??应该用Secoket.ReceiveBuf()的吧?
 
socket 可以工作于阻塞和非阻塞(Blocking ,nonBlocking)
Delphi的缺省方式是阻塞方式,这时有丢数据报的情况,
用非阻塞方式时,要使用线程来接受数据,
 
用非阻塞方式传送数据时,最好在两次传送之间有延迟,否则容易丢失数据
 
用一个线程专门来接受数据,这样也许可以避免丢失
数据的现象。
 
是呀,如果另一端输出的速度相当的快,你的接收就会有问题了
你的问题我也碰到过,一次是我用UDP解决的,另一次我是加了
一个线程就可以了
Blocking ,nonBlocking相当的关键,要注意设置呀
 
各位:
我需要一个 WinSocket 非阻塞方式传送数据的例子(使用线程),哪位帮帮我?
tianhf@cy7.dq.cnpc.com.cn 谢谢!
 
??
我记得好象默认的都是非组塞方式的,就是有数据就触发事件。
用组塞方式要用到线程。
发送数据过太数据是会丢失,因为队列满了。
Socket和UDP在数据过大或发送速度过快时都可能出错。
 
多人接受答案了。
 
后退
顶部