Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程创建中的c编程错误? void*newThread(void*arg) { makeTimer(“第一个计时器”&第一个timerid,2,2);//2ms makeTimer(“第二个计时器”&第二个计时器,10,10);//10ms makeTimer(“第三个计时器”和第三个计时器,100100);//100ms 返回0; } int CreateSocket() { pthread_t tid; socklen_t len=sizeof(客户); //UDP的套接字创建 acceptSocket=socket(AF_INET,SOCK_DGRAM,0); if(acceptSocket==-1) { printf(“失败:套接字创建失败,失败代码\n”); 返回1; } 其他的 { printf(“套接字已启动!\n”); } //非阻塞模式 /*rc=ioctl(acceptSocket,FIONBIO,(char*)&flag); if(rc_C_Linux_Multithreading_Sockets_Timer - Fatal编程技术网

线程创建中的c编程错误? void*newThread(void*arg) { makeTimer(“第一个计时器”&第一个timerid,2,2);//2ms makeTimer(“第二个计时器”&第二个计时器,10,10);//10ms makeTimer(“第三个计时器”和第三个计时器,100100);//100ms 返回0; } int CreateSocket() { pthread_t tid; socklen_t len=sizeof(客户); //UDP的套接字创建 acceptSocket=socket(AF_INET,SOCK_DGRAM,0); if(acceptSocket==-1) { printf(“失败:套接字创建失败,失败代码\n”); 返回1; } 其他的 { printf(“套接字已启动!\n”); } //非阻塞模式 /*rc=ioctl(acceptSocket,FIONBIO,(char*)&flag); if(rc

线程创建中的c编程错误? void*newThread(void*arg) { makeTimer(“第一个计时器”&第一个timerid,2,2);//2ms makeTimer(“第二个计时器”&第二个计时器,10,10);//10ms makeTimer(“第三个计时器”和第三个计时器,100100);//100ms 返回0; } int CreateSocket() { pthread_t tid; socklen_t len=sizeof(客户); //UDP的套接字创建 acceptSocket=socket(AF_INET,SOCK_DGRAM,0); if(acceptSocket==-1) { printf(“失败:套接字创建失败,失败代码\n”); 返回1; } 其他的 { printf(“套接字已启动!\n”); } //非阻塞模式 /*rc=ioctl(acceptSocket,FIONBIO,(char*)&flag); if(rc,c,linux,multithreading,sockets,timer,C,Linux,Multithreading,Sockets,Timer,我正在研究客户机和服务器体系结构。上面显示了服务器代码,我创建了一个套接字,通过ip地址和端口号接收来自客户端的请求。服务器正在等待来自客户端的请求,并将响应发送回客户端。我还创建了计时器,每2ms、10ms和100ms调用一次te任务。我创建了一个单独的线程来调用计时器任务。线程在未从客户端接收任何数据后运行时被调用。错误是什么 recvfrom()是否返回?当它接收到一些数据时,有一个称为XcpIp\u RxCallback((uint16)rc,(uint8*)buf,(uint16)po

我正在研究客户机和服务器体系结构。上面显示了服务器代码,我创建了一个套接字,通过ip地址和端口号接收来自客户端的请求。服务器正在等待来自客户端的请求,并将响应发送回客户端。我还创建了计时器,每2ms、10ms和100ms调用一次te任务。我创建了一个单独的线程来调用计时器任务。线程在未从客户端接收任何数据后运行时被调用。错误是什么

recvfrom()
是否返回?当它接收到一些数据时,有一个称为XcpIp\u RxCallback((uint16)rc,(uint8*)buf,(uint16)port)的api;自动执行进一步的数据发送。但处于调试模式。它仅在pthread_create处停止。
void *newThread(void *arg)
{
  makeTimer("First Timer", &firstTimerID, 2, 2);   //2ms
  makeTimer("Second Timer", &secondTimerID, 10, 10);    //10ms
  makeTimer("Third Timer", &thirdTimerID, 100, 100);  //100ms
  return 0;
}


int CreateSocket()
{
  pthread_t tid;
  socklen_t len = sizeof(client);
  // Socket creation for UDP

  acceptSocket=socket(AF_INET,SOCK_DGRAM,0);

  if (acceptSocket==-1)
  {
    printf("Failure: socket creation is failed, failure code\n");
    return 1;
  }
  else
  {
    printf("Socket started!\n");
  }

  //non blocking mode
  /* rc = ioctl(acceptSocket, FIONBIO, (char *)&flag);
      if (rc < 0)
      {
                 printf("\n ioctl() failed \n");
         return 0;
      }*/

  //Bind the socket
  memset(&addr, 0, sizeof(addr));
  addr.sin_family=AF_INET;
  addr.sin_port=htons(port);
  addr.sin_addr.s_addr=htonl(INADDR_ANY);
  rc=bind(acceptSocket,(struct sockaddr*)&addr,sizeof(addr));
  if (rc== -1)
  {
    printf("Failure: listen, failure code:\n");
    return 1;
  }
  else
  {
    printf("Socket an port %d \n",port);
  }

  if (acceptSocket == -1)
  {
    printf("Fehler: accept, fehler code:\n");
    return 1;
  }
  else
  {
    pthread_create(&tid, NULL, &newThread, NULL);

    while (rc!=-1)
    {
      rc=recvfrom(acceptSocket,buf, 256, 0, (struct sockaddr*) &client, &len);

      if (rc==0)
      {
        printf("Server has no connection..\n");
        break;
      }

      if (rc==-1)
      {
        printf("something went wrong with data %s", strerror(errno));
        break;
      }

      XcpIp_RxCallback( (uint16) rc, (uint8*) buf, (uint16) port );
    }
  }

  close(acceptSocket);
  return 0;
}


int main()
{
  Xcp_Initialize();
  CreateSocket();
  return 0;
}