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

socket编程原理(六)

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

close(mainsock);

return(-3);

}

if (listen(mainsock, 5) == -1) { /* 将主动套接字变为被动套接字,准备好接收连接 */

close(mainsock);

return(-4);

}

/* Set this socket as a Non-blocking socket. */

if (ioctl(mainsock, FIONBIO, &flag) == -1) {

close(mainsock);

return(-5);

}

Mysock.DaemonSock = mainsock;

FD_SET(mainsock, &Mysock.readfds); /* 申明对主套接字"可读"感兴趣 */

FD_SET(mainsock, &Mysock.exceptfds); /* 申明对主套接字上例外事件感兴趣 */

return(1); 

}

void CloseMainSock()

/* 关闭主套接字,并清除对它上面事件的申明。在程序结束前关闭主套接字是一个好习惯 */

{

close(Mysock.DaemonSock);

FD_CLR(Mysock.DaemonSock, &Mysock.readfds);

FD_CLR(Mysock.DaemonSock, &Mysock.exceptfds);

}

int CreateConnection(struct in_addr *sin_addr)

/* Create a Connection to remote host which IP address is in sin_addr. 

Param: sin_addr indicates the IP address in Network Byte Order. 

if succeed return the socket number which indicates this connection,

else return error code (<0) */

{

struct sockaddr_in server; /* server address */

int tmpsock, flag=1, i;

if ((tmpsock = socket(AF_INET, SOCK_STREAM, 0)) < 0)

return(-1);

server.sin_family = AF_INET;

server.sin_port = Mysock.Port;

server.sin_addr.s_addr = sin_addr->s_addr;

/* Set this socket as a Non-blocking socket. */

if (ioctl(tmpsock, FIONBIO, &flag) == -1) {

close(tmpsock);

return(-2);

}

/* Connect to the server. */

if (connect(tmpsock, (struct sockaddr *)&server, sizeof(server)) < 0) {

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