社区
网络通信/分布式开发
帖子详情
[急,高分求教]服务器用WinSocket的Send函数,为什么客户端有时会收不到?
onehawk
2005-03-24 08:16:34
如标题
我在写一个通信软件时,服务器用Send发送信息,但是明明Send返回值>0,但是客户端却有时会收不到信息
我是用TServerSocket和TClientSocket做的,至于为什么不用Indy是另有原因.
在服务器和Client每收到一个消息时我就新建 一个线程去处理.
请教一下这会是什么原因?
还有Select怎么用?
急啊!!!!
...全文
93
4
打赏
收藏
[急,高分求教]服务器用WinSocket的Send函数,为什么客户端有时会收不到?
如标题 我在写一个通信软件时,服务器用Send发送信息,但是明明Send返回值>0,但是客户端却有时会收不到信息 我是用TServerSocket和TClientSocket做的,至于为什么不用Indy是另有原因. 在服务器和Client每收到一个消息时我就新建 一个线程去处理. 请教一下这会是什么原因? 还有Select怎么用? 急啊!!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jilu_sun
2005-04-26
打赏
举报
回复
MARK
flyinwuhan
2005-03-24
打赏
举报
回复
>>当我同时5个用户登录时,会出现有的用户只收到了2~3个的情况(本来应该是4个)
感觉是你的程序的算法或逻辑问题。。。。不应该是socket的问题。。。。。再检查一下你的代码。。。
onehawk
2005-03-24
打赏
举报
回复
谢谢楼上提供的select
是这样的,用户登录服务器时,服务器返回当前在线用户情况,服务也将该新用户的信息传达给其它在线用户.
问题就是
当我同时5个用户登录时,会出现有的用户只收到了2~3个的情况(本来应该是4个)
而在我手动调用过Select之后,情况有点好转,但是问题依然存在.
就是搞不错倒底是什么原因.
flyinwuhan
2005-03-24
打赏
举报
回复
Select怎么用?
TServerSocket和TClientSocket已经不停地select了,你还select干什么~~~~~~```
select():检查一或多个 Sockets 是否处於可读、可写或错误的状态。
格 式: int select( int nfds,
fd_set FAR *readfds,
fd_set FAR *writefds,
fd_set FAR *exceptfds,
const struct timeval FAR *timeout );
参 数: nfds 此参数在此并无作用
readfds 要被检查是否可读的 Sockets
writefds 要被检查是否可写的 Sockets
exceptfds 要被检查是否有错误的 Sockets (*暂无作用)
timeout 此函式该等待的时间。若为 NULL 时,
表示 blocking,此函式会等到有事件发生。
传回值: 成功 - 符合条件的 Sockets 总数 (若 Timeout 发生,则为 0)
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
说明: 使用者可利用此函式来检查 Sockets 是否有资料可被读取,
或是有空间可以写入,或是有错误发生。
fd_read : TFDSet;
timeout : TTimeVal;
FD_ZERO( fd_read );
FD_SET( FSock, fd_read );
timeout.tv_sec := 0;
timeout.tv_usec := 500;
if select( 0, @fd_read, nil, nil, @timeout ) > 0 then //至少有1个connection可读
begin
if FD_ISSET( FSock, fd_read ) then
begin
for i:=0 to fd_read.fd_count-1 do //注意,fd_count <= FD_SETSIZE(64)
begin
。。。。。。。
win
socket
编程实现
客户端
与
服务器
端通信
win
socket
编程实现
客户端
与
服务器
端通信,熟悉UDP和TCP的
socket
编程
win
socket
完美
服务器
和
客户端
通信控件
搞了四个小时,附带使用DEMO,适用于vs.net2005及...实现支持200个客端的
服务器
+作为
客户端
连接到
服务器
(允许选择使用发送指令即时通过该
函数
返回或者类似传统
win
sk com控件的功能),替換之前本人发布的同名控件。
TCPIP
服务器
客户端
测试VS2010含源码
简单的VS2010使用
win
socket
建立的
客户端
与
服务器
程序,含源码,可根据需求修改
服务器
IP与端口号,并可定时收发数据。首先,运行
服务器
程序,界面上输入
服务器
IP与端口号,并创建
服务器
;其次,运行
客户端
程序,界面...
UDP
客户端
_
win
socket
的UDP
客户端
_sangdiy_
在
win
dows下的
win
socket
的UDP
客户端
Win
Socket
常用
函数
及结构
常用结构定义及
函数
WSADATA sockaddr_in fd_set timeval WSAStartup WSACleanup htons htonl ntohs ntohl inet_addr inet_ntoa
socket
close
socket
bind listen connect accept select
send
...
网络通信/分布式开发
1,593
社区成员
32,964
社区内容
发帖
与我相关
我的任务
网络通信/分布式开发
Delphi 网络通信/分布式开发
复制链接
扫一扫
分享
社区描述
Delphi 网络通信/分布式开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章