Esempio n. 1
0
bool wxGISLocalClientConnection::Connect(void)
{
	if(m_bIsConnected)
		return true;

    wxString sHost(HOST);
    unsigned short nPort(PORT);
    unsigned short nTimeOut(TIMEOUT);
    wxGISAppConfig oConfig = GetConfig();
    if(oConfig.IsOk())
    {
        sHost = oConfig.Read(enumGISHKCU, wxString(wxT("wxGISCommon/tasks/host")), sHost);
        nPort = oConfig.ReadInt(enumGISHKCU, wxString(wxT("wxGISCommon/tasks/port")), nPort);
        nTimeOut = oConfig.ReadInt(enumGISHKCU, wxString(wxT("wxGISCommon/tasks/timeout")), nTimeOut);
    }

	//start conn
	IPaddress addr;
	addr.Hostname(sHost);
	addr.Service(nPort);

    // Create the socket
    wxSocketClient* pSock = new wxSocketClient(wxSOCKET_WAITALL | wxSOCKET_BLOCK | wxSOCKET_REUSEADDR);
	m_pSock = pSock;
    m_pSock->SetEventHandler(*this, SOCKET_ID);
    m_pSock->Notify(true);
    m_pSock->SetNotify(wxSOCKET_CONNECTION_FLAG|wxSOCKET_LOST_FLAG);
	m_pSock->SetTimeout(nTimeOut);
    pSock->Connect(addr, false);

    m_bIsConnecting = true;

    return CreateAndRunThreads();
}
/*!
 *  Create server listening on socket
 *  Subscribes to connection events with ID SERVER_ID
 */
void GdbServerWindow::createServer() {

   // Create the address
   IPaddress listenAddr;
   listenAddr.Service(shared->getGdbServerPort());
   listenAddr.Hostname(_("localhost"));
   serverAddr = getAddr(listenAddr);

   closeServer();

   // Create the socket
   serverSocket = new wxSocketServer(listenAddr, wxSOCKET_NOWAIT);

   // We use IsOk() here to see if the server is really listening
   if (!serverSocket->IsOk()) {
      statusTextControl->AppendText(_("ERROR: Could not create server at the specified port !\n"));
      return;
   }

   string bdmSerialNumber = shared->getBdmSerialNumber();
   if (bdmSerialNumber.length() > 0) {
      if (shared->getBdmMatchRequired()) {
         statusTextControl->AppendText(_("Using required USBDM interface S/N = \'")+wxString(bdmSerialNumber.c_str(), wxConvUTF8)+_("\'\n"));
      }
      else {
         statusTextControl->AppendText(_("Using preferred USBDM interface S/N = \'")+wxString(bdmSerialNumber.c_str(), wxConvUTF8)+_("\'\n"));
      }
   }
   else {
      statusTextControl->AppendText(_("Using any suitable USBDM interface\n"));
   }
   IPaddress addrReal;
   if (!serverSocket->GetLocal(addrReal) ) {
      statusTextControl->AppendText(_("ERROR: couldn't get the address we bound to\n"));
   }
   else {
      serverAddr = getAddr(addrReal);
      wxString s;
      s.Printf(_("Server created @%s\n"), (const char *)serverAddr.c_str());
      statusTextControl->AppendText(s);
   }

   // Setup the event handler and subscribe to connection events
   serverSocket->SetEventHandler(*this, SERVER_ID);
   serverSocket->SetNotify(wxSOCKET_CONNECTION_FLAG);
   serverSocket->Notify(true);

   serverState = listening;

   UpdateStatusBar();
}
Esempio n. 3
0
bool wxGISLocalNetworkPlugin::CreateListenSocket(void)
{
	IPaddress LocalAddress; // For the listening
	LocalAddress.Service(m_nPort); // port on which we listen for clients

	bool bIsAddrSet = false;
	if(m_sAddr.IsEmpty())
    {
		bIsAddrSet = LocalAddress.AnyAddress();
    }
	else
    {
		bIsAddrSet = LocalAddress.Hostname(m_sAddr);
    }

	if(!bIsAddrSet)
	{
		wxLogError(_("wxGISLocalNetworkPlugin: Invalid address - %s"), m_sAddr.c_str());
		return false;
	}

	m_listeningSocket = new wxSocketServer(LocalAddress, wxSOCKET_WAITALL|wxSOCKET_REUSEADDR);
    m_listeningSocket->SetEventHandler(*this, TCP_SERVER_ID);
    m_listeningSocket->SetNotify(wxSOCKET_CONNECTION_FLAG);
    m_listeningSocket->Notify(true);
    if (!m_listeningSocket->IsOk())
    {
		wxLogError(_("wxGISLocalNetworkPlugin: Could not listen at the specified port! Port number - %d"), m_nPort);
        //wxLogError(wxString(_("Cannot bind listening socket")));
        return false;
    }

    wxLogMessage(_("Server listening at port %d, waiting for connections"), m_nPort);

    return true;
}