考试网 >> IT认证 >> 水平 >> 软件指导 >> socket编程原理(六)

socket编程原理(六)

发布时间:2006-06-28 03:36     点击:
分页:上一页  1 2 3 4 5 [6] 7 8 9  下一页

if ((Sockno >= 64) || (Sockno < 0) || (Mysock.Sockets[Sockno] == 0))

return(0);

retcode = close(Mysock.Sockets[Sockno]);

FD_CLR(Mysock.Sockets[Sockno], &Mysock.readfds);

FD_CLR(Mysock.Sockets[Sockno], &Mysock.writefds);

FD_CLR(Mysock.Sockets[Sockno], &Mysock.exceptfds);

Mysock.Sockets[Sockno] = 0;

Mysock.SockNum--;

return(retcode);

}

int QuerySocketsMsg()

/* Query Sockets Message. If succeed return message number, else return -1.

The message information stored in struct SockMsg. */

{

fd_set rfds, wfds, efds;

int retcode, i;

struct timeval TimeOut;

rfds = Mysock.readfds;

wfds = Mysock.writefds;

efds = Mysock.exceptfds;

TimeOut.tv_sec = 0; /* 立即返回,不阻塞。*/

TimeOut.tv_usec = 0;

bzero((char *)&SockMsg, sizeof(SockMsg));

if ((retcode = select(64, &rfds, &wfds, &efds, &TimeOut)) == 0)

return(0);

if (FD_ISSET(Mysock.DaemonSock, &rfds))

SockMsg.AcceptNum = 1; /* some client call server. */

for (i=0; i<64; i++) /* Data in message */

{

if ((Mysock.Sockets[i] > 0) && (FD_ISSET(Mysock.Sockets[i], &rfds))) 

SockMsg.ReadQueue[SockMsg.ReadNum++] = i;

}

for (i=0; i<64; i++) /* Data out ready message */

{

if ((Mysock.Sockets[i] > 0) && (FD_ISSET(Mysock.Sockets[i], &wfds))) 

SockMsg.WriteQueue[SockMsg.WriteNum++] = i;

}

if (FD_ISSET(Mysock.DaemonSock, &efds))

SockMsg.AcceptNum = -1; /* server socket error. */

for (i=0; i<64; i++) /* Error message */

{

if ((Mysock.Sockets[i] > 0) && (FD_ISSET(Mysock.Sockets[i], &efds))) 

SockMsg.ExceptQueue[SockMsg.ExceptNum++] = i;
分页:上一页  1 2 3 4 5 [6] 7 8 9  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有