Chinaunix首页 | 论坛 | 博客
  • 博客访问: 452653
  • 博文数量: 80
  • 博客积分: 2301
  • 博客等级: 大尉
  • 技术积分: 884
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-16 20:07
个人简介

I\'m interested in mathematics and Daoism. Welcome to talk about these subjects with me.

文章分类

全部博文(80)

文章存档

2017年(2)

2016年(16)

2015年(4)

2014年(6)

2013年(22)

2012年(2)

2011年(1)

2010年(4)

2009年(20)

2008年(2)

2007年(1)

我的朋友

分类: C/C++

2013-05-22 09:24:57

#include
#include

#include
#include
#include

#include
#include


char *cmd_1 = "test_create_inode";
char *cmd_2 = "test_destroy_inode";
int sockfd,numbytes;
char buf[100];
struct sockaddr_in their_addr;
//int i = 0;

int socket_set_nonblock (int fd)
{
    int flags = 0;
    int ret = -1;

    flags = fcntl (fd, F_GETFL);

    if (flags != -1)
    ret = fcntl (fd, F_SETFL, flags | O_NONBLOCK);
    else
    printf("failed to get flags\n");

    return ret;
}



int main(int argc,char *argv[])
{
    time_connect(2);

    return 1;
}


//man connect
//read : EINPROCESS
int time_connect(int seconds)
{
    //he = gethostbyname(argv[1]);

    if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
    {
    perror("socket");
    printf("create socket error\n");
    exit(1);
    }
    their_addr.sin_family = AF_INET;
    their_addr.sin_port = htons(2323);
    // their_addr.sin_addr = *((struct in_addr *)he->h_addr);
    inet_aton( "127.0.0.1", &their_addr.sin_addr );

    socket_set_nonblock(sockfd);

    bzero(&(their_addr.sin_zero),8);
    if(connect(sockfd,(struct sockaddr *)&their_addr,sizeof(struct sockaddr)) == -1)
    {
    perror("connect");
    }


    fd_set wrevents;
    FD_ZERO(&wrevents);
    FD_SET(sockfd, &wrevents);  


    struct timeval tv;
    tv.tv_sec = seconds;  
    tv.tv_usec = 0;

    int retcode = select(sockfd + 1, NULL, &wrevents, NULL, &tv);
    if (retcode < 0)
    {
    printf("failed\n");
    }
    else if (retcode == 0)
    {
    printf("time out\n");    
    }
    else //(retcode > 0)
    {
    printf("have event\n");

    if (FD_ISSET(sockfd, &wrevents))
    {
        printf("writable\n");
        int err = 0;
        int len = sizeof(err);

        if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &err, &len) < 0) {
        printf("failed to getsockopt\n");
        }
        else
        printf("succ to getsockopt\n");
        if (err == 0)
        {
        printf("connect succ\n");
        return 1;

        }
        else
        printf("connect failed\n");

    }
    }
    return 0;
}

void print_usage()
{
    printf("input an integer command. 1: create inodes; 2: destroy inode\n");
}

阅读(1413) | 评论(0) | 转发(0) |
0

上一篇:关于node.js

下一篇:tls example in c

给主人留下些什么吧!~~