+ -
当前位置:首页 → 问答吧 → 一个关于Arm7的问题

一个关于Arm7的问题

时间:2005-07-12

来源:互联网

各位大侠,有个问题想请教一下。
    最近使用Arm7(s3c44b0x)开发,库用的是uC-libc
    当用下面的语句:
    while(1) {
        int sockfd;
       sockfd = socket(AF_INET, SOCK_STREAM, 0);
       printf("create socket id = [%d]\n", sockfd);
       close(sockfd);
   }
   这样每次可以看到都是3,这当是正常的

可是一旦在中间加入了连接语句的时候,就完了。头一次sockfd还是3,
以后每次都是0,那不是stdin吗?不知道那位大侠能帮忙解释一下。
代码是这样的:
int tcp_conn(const char *ip, int port)
{
struct sockaddr_in  addr;
struct servent  *pServ;
int   i, sockfd= -1;
int e;
int ret = 0;
/* 首先为地址赋值 */
memset(&addr, 0x00, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
errno = 0;
if (inet_aton(ip, &addr.sin_addr) < 0) {
  ret = -1;
  goto lbl_atlast;
}
/* 建立套接字 */
sockfd= socket(AF_INET, SOCK_STREAM, 0);
printf("create socket [%d]\n", nSockId);
/* 连接目标地址 */
if (connect(nSockId, (struct sockaddr*)&addr,
  sizeof(struct sockaddr)) < 0) {
  e = errno;
  close(nSockId);
  ret = -2;
  goto lbl_atlast;
}

ret = nSockId;
lbl_atlast:
return ret;
}

main()
{
   while(1) {
        int sockfd;
       sockfd = tcp_conn("192.168.1.10", 3333);
       printf("create socket id = [%d]\n", sockfd);
       close(sockfd);
   }
}      

作者: miracon   发布时间: 2005-07-12

这个问题太难了吗,还是哪里做的不对头
怎么连个说不会的都没有?      

作者: miracon   发布时间: 2005-07-13

你是不是应该设个临时变量
让它等于sockfd
以后就对这个临时变量操作

我申明我是很菜的,别笑话我      

作者: jun_zero   发布时间: 2005-07-18