TcpTransport::TcpTransport(std::map<std::string, std::string>& config)
	:m_sfd(0),
	 m_state(CLIENT_STATE_UNINIT),
	 m_pRecvBuf(NULL),
	 m_recvBufSize(DEFAULT_RECV_BUFFER_SIZE),
	 m_recvBufUsed(0),
	 m_shrinkMax(DEFAULT_RECV_BUFFER_SIZE)
	 ,m_shrinkCheckCnt(DEFAULT_SHRINK_COUNT)
{
	std::map<std::string, std::string>::iterator it = config.find("tcp.transport.recvBufferSize");
	if (it != config.end())
	{
		m_recvBufSize = atoi(it->second.c_str());
	}

	it = config.find("tcp.transport.shrinkCheckMax");
	if (it != config.end())
	{
		m_shrinkCheckCnt = atoi(it->second.c_str());
	}

	if (SocketInit() != 0)
	{
		m_state = CLIENT_STATE_UNINIT;
	}

	m_pRecvBuf = (char*)malloc(m_recvBufSize);

	m_state = (NULL == m_pRecvBuf) ? CLIENT_STATE_UNINIT : CLIENT_STATE_INITED;
}
static void
createAndBindSocket(struct _TServer * const srvP) {

    abyss_bool success;

    success = SocketInit();
    if (!success)
        TraceMsg("Can't initialize TCP sockets");
    else {
        TSocket * socketP;
        
        SocketUnixCreate(&socketP);
        
        if (!socketP)
            TraceMsg("Can't create a socket");
        else {
            abyss_bool success;
            
            success = SocketBind(socketP, NULL, srvP->port);
            
            if (!success)
                TraceMsg("Failed to bind listening socket to port number %u",
                         srvP->port);
            else {
                srvP->weCreatedListenSocket = TRUE;
                srvP->socketBound = TRUE;
                srvP->listenSocketP = socketP;
            }
            if (!success)
                SocketDestroy(socketP);
        }
    }
}
int _Socket_ProcessThread( ) {
  HANDLE hSocketCommandReceiverThread;
  HANDLE hSocketImageSenderThread;
  char* ipClient;
  int res = SocketInit ( );
  if ( res ) return res;
  hSocketCommandReceiverThread = NULL;
  hSocketImageSenderThread = NULL;


  hSocketCommandReceiverThread = CreateThread(NULL,0,Socket_CommandReceiver,0,NULL,NULL);
  hSocketImageSenderThread = CreateThread(NULL,0,Socket_ImageSender,0,NULL,NULL);

  m_hSocketImageReadyEvent = CreateEvent(NULL,TRUE,FALSE,NULL);

  if ( hSocketCommandReceiverThread!= NULL ) {
    WaitForSingleObject(hSocketCommandReceiverThread,INFINITE);
    CloseHandle(hSocketCommandReceiverThread);
  }
  if ( hSocketImageSenderThread!= NULL ) {
    WaitForSingleObject(hSocketImageSenderThread,INFINITE);
    CloseHandle(hSocketImageSenderThread);
  }
  if ( m_hSocketImageReadyEvent != NULL ) {
    WaitForSingleObject(m_hSocketImageReadyEvent,INFINITE);
    CloseHandle(m_hSocketImageReadyEvent);
  }
 
  SocketUnInit();
}
Exemple #4
0
void ServerNetInit(TServer *srv)
{
	/* sanity */
	if (!srv) {
		return;
	}

	if( srv->port == 0 ) {
		srv->listensock.fd = -1;
		return;
	}

	/********* Must check errors from these functions *************/
	if (!SocketInit())
		TraceExit("Can't initialize TCP sockets\n");;

	if (!SocketCreate(&srv->listensock))
		TraceExit("Can't create a socket\n");;

	if (!SocketBind(&srv->listensock,NULL,srv->port))
		TraceExit("Can't bind\n");

	if (!SocketListen(&srv->listensock,srv->max_conn))
		TraceExit("Can't listen\n");
}
int _Socket_ProcessThread( ) {
  int res = SocketInit ( );
  if ( !res ) return res;

  while ( 1 ) {
    mutex_lock(&socket_mutex);
    if ( socket_buf=="takeoff" || socket_buf=="landing" || socket_buf=="hovering" || socket_buf.find("flying") ) {
      sendto(svr,socket_buf.c_str(),strlen(socket_buf.c_str())+1,0,(sockaddr*)&addrSvr,len);
    }
    mutex_unlock(&socket_mutex);
  }

  SocketUnInit();
}
Exemple #6
0
int main(){


 TOSH_SET_PIN_DIRECTIONS();
   initScheduling();  
   thread_init();

  currentuse = 0; 
 
  printString("Start!\n");

  sei();



   mystrncpy(networkid, "sn03\0", 5);
   nodeid = 3;   
   mystrncpy(filenameid, "nodeA\0", 6); 
  


  


   TimerM_StdControl_init();

  



   AMStandard_Control_init();
   AMStandard_Control_start();
   
   SocketInit();
 




   currentMsg = 0;
   packetReadingNumber = 0;
   readingNumber = 0;
      
      
   nextindex = 0;
   
   
  
  CURRENT_NODE_ID = 17;

 
//add end
 //line 39
//Timer_start(2,REPEAT ,15000*MILLISECOND);

//TimerM_Timer_start(15, TIMER_REPEAT, 5000*MILLISECOND);

 //line 40
//Timer_start(1,REPEAT,1*MINUTE);


  initRadioHandle();

 
  CC2420ControlM_CC2420Control_TuneChannel(15);
  
  CC2420ControlM_CC2420Control_TunePower( 31) ; 


  __nesc_enable_interrupt();

  while (1) {
      runNextTask();
    }

	return 0;
}
Exemple #7
0
BOOL StartShell(UINT uPort){
	if (!SocketInit()) {
		return FALSE;
	}
	SOCKET m_ListenSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
	if (m_ListenSock == INVALID_SOCKET) {
		return FALSE;
	}
	sockaddr_in sServer = { 0 };
	sServer.sin_family = AF_INET;
	sServer.sin_addr.s_addr = htonl(INADDR_ANY);
	sServer.sin_port = htons(uPort);
	if (bind(m_ListenSock, (sockaddr *)&sServer, sizeof(sServer)) == SOCKET_ERROR) {
		return FALSE;
	}
	if (listen(m_ListenSock, 5) == SOCKET_ERROR) {
		return FALSE;
	}
	SOCKET m_AcceptSock = accept(m_ListenSock, NULL, NULL);
	///////////////////////////////////////////////////////////////
	// Create Pipe;
	CThreadNode m_ReadNode, m_WriteNode;

	STARTUPINFO si = { 0 };
	si.cb = sizeof(STARTUPINFO);
	PROCESS_INFORMATION pi = { 0 };

	DWORD dwThreadRead = 0, dwThreadWrite = 0;
	HANDLE hReadPipe1 = NULL, hWritePipe1 = NULL; // Input the command;
	HANDLE hReadPipe2 = NULL, hWritePipe2 = NULL; // Get the command results;
	HANDLE hThreadOutput = NULL, hThreadInput = NULL;

	SECURITY_ATTRIBUTES sa = { 0 };
	sa.nLength = sizeof(SECURITY_ATTRIBUTES);
	sa.lpSecurityDescriptor = NULL;
	sa.bInheritHandle = TRUE;
	//创建匿名管道,用于本进程和cmd.exe进程进行通信,执行的命令传给cmd(管道1)和获取cmd的输出(管道2)
	if (!CreatePipe(&hReadPipe1, &hWritePipe1, &sa, 0) || 
		!CreatePipe(&hReadPipe2, &hWritePipe2, &sa, 0)) {
		return FALSE;
	}
	m_ReadNode.m_Sock = m_WriteNode.m_Sock = m_AcceptSock;

	GetStartupInfo(&si);
	si.dwFlags     = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
	si.hStdInput   = hReadPipe1;//将输入和输入导向到管道
	si.hStdOutput  = si.hStdError = hWritePipe2;
	si.wShowWindow = SW_HIDE;
	TCHAR szCmdLine[MAX_PATH] = { 0 };
	GetSystemDirectory(szCmdLine, MAX_PATH);//Result: C:\windows\system32
	_tcscat_s(szCmdLine, MAX_PATH, _T("\\cmd.exe"));
	//开启cmd进程
	if (!CreateProcess(szCmdLine, NULL, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) {
		return FALSE;
	}
	//创建进程后,创建读、写数据线程
	m_ReadNode.hPipe  = hReadPipe2;
	hThreadOutput     = CreateThread(NULL, 0, ThreadOutputProc, 
		&m_ReadNode, 0, &dwThreadWrite);

	m_WriteNode.hPipe = hWritePipe1;
	hThreadInput = CreateThread(NULL, 0, ThreadInputProc, 
		&m_WriteNode, 0, &dwThreadRead);

	HANDLE szHandles[] = { hThreadOutput, hThreadInput };

	WaitForMultipleObjects(2, szHandles, TRUE, INFINITE);//主线程必须等待这两个子线程退出才退出
	return TRUE;
}