用delphi使用套接字发现的问题,我想问的是UDP协议套接字接受数据用recvfrom,我一直以为是调用recvfrom时线程(非异步套接字)是一直等待,直到有人发送数据,才返回,并接受在recfrom后加了其他
语句确实发现是这样的,未接受数据线程就停在了recvfrom处
不过我让另一端先发送,而接受端后调用recvfrom也一样可以接受到数据,显然问题来了,一端发送数据时,对方即使过一会再接数据也一样能接到,不需要在发送端发送前就调用recvfrom和我当初看到的一个说法不一样,那我猜测数据可能先发送到了端口,然后调用recvfrom就可以取到,如果端口啥也没有recvfrom就等待。
但又有一个问题出现,我尝试了一下,如果接收方不调用recvfrom,由发送方发送3次不同的数据接收方再调用3次recvfrom居然可以接受到3个数据,第四次接受不到,但这3次确实相同的数据,都是最后一次发送的那个数据,只有又试了4次,发送5次发送,接受也分别可以接受到4次数据和5次数据,但还都是相同的数据这个是啥子原理啊,UDP接受和发送数据到底是怎么完成的,哪位高手解释下。。
语句确实发现是这样的,未接受数据线程就停在了recvfrom处
不过我让另一端先发送,而接受端后调用recvfrom也一样可以接受到数据,显然问题来了,一端发送数据时,对方即使过一会再接数据也一样能接到,不需要在发送端发送前就调用recvfrom和我当初看到的一个说法不一样,那我猜测数据可能先发送到了端口,然后调用recvfrom就可以取到,如果端口啥也没有recvfrom就等待。
但又有一个问题出现,我尝试了一下,如果接收方不调用recvfrom,由发送方发送3次不同的数据接收方再调用3次recvfrom居然可以接受到3个数据,第四次接受不到,但这3次确实相同的数据,都是最后一次发送的那个数据,只有又试了4次,发送5次发送,接受也分别可以接受到4次数据和5次数据,但还都是相同的数据这个是啥子原理啊,UDP接受和发送数据到底是怎么完成的,哪位高手解释下。。
自带的、indy、...?
接受数据,建议请先初始化你的接受buf。
估计你已经做好了。