Select模型只接收数据,不能发送数据

tan625747 2009-09-19 11:56:55
while(TRUE)
{
printf("nRetCode!=SOCKET_ERROR) while(TRUE)\t");
FD_SET writefd;
FD_SET readfd;
FD_ZERO(&writefd);
FD_ZERO(&readfd);
FD_SET(ServerSocket,&writefd);
FD_SET(ServerSocket,&readfd);
nRetCode=select(0, &writefd, &readfd, NULL, NULL);
if(SOCKET_ERROR==nRetCode)
{
printf("Select错误");
return nRetCode ;
}
else if(nRetCode>0)
{
if(FD_ISSET(ServerSocket,&writefd))
{
printf("writefd启动");
if(FALSE ==SendData(ServerSocket))//发送数据接收数据
{
printf("SendData(ServerSocket)未成功");
// RecvData(ServerSocket);
return 0;
}
}
if(FD_ISSET(ServerSocket,&readfd))
{
printf("readfd启动\n");
if (FALSE == RecvData(ServerSocket)) //接收数据
{
printf("RecvData(ServerSocket)失败");
// RecvData(ServerSocket);
return 0;
}
}
}
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tan625747 2009-09-19
  • 打赏
  • 举报
回复
呵知道了,int select(nfds, readfds, writefds, exceptfds, timeout)
int nfds;
fd_set *readfds, *writefds, *exceptfds;
struct timeval *timeout;

ndfs:select监视的文件句柄数,视进程中打开的文件数而定,一般设为呢要监视各文件
中的最大文件号加一。
readfds:select监视的可读文件句柄集合。
writefds: select监视的可写文件句柄集合。
exceptfds:select监视的异常文件句柄集合。
timeout:本次select()的超时结束时间。(见/usr/sys/select.h,
可精确至百万分之一秒!)

我select 涵擞 ,readfd 和writefd 搞反了
tan625747 2009-09-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnoe 的回复:]
只有当发送数据太大时,一次发送不完,select才会通知write fd
[/Quote]


我的发送数据函数,还没有调用,“怎么会发送数据太大”的说法呢。
hnoe 2009-09-19
  • 打赏
  • 举报
回复
只有当发送数据太大时,一次发送不完,select才会通知write fd

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧