Exemplo n.º 1
0
int main(int argc, const char* argv[])
{
    HWND hWnd;
    MSG msg;
    const char* host = DEFAULT_HOST;
    const char* port = DEFAULT_PORT;
    if (argc > 2)
    {
        host = argv[1];
        port = argv[2];
    }

    hWnd = IntiInstance((HINSTANCE)GetModuleHandle(NULL));
    CHECK(InitializeServer(hWnd, host, atoi(port)));

    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (msg.message == WM_SOCKET)
        {
            SOCKET fd = msg.wParam;
            int event = WSAGETSELECTEVENT(msg.lParam);
            int error = WSAGETSELECTERROR(msg.lParam);
            HandleNetEvents(hWnd, fd, event, error);
        }
        else
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    CloseServer();
    return 0;
}
Exemplo n.º 2
0
LONG
CSecondPage::OnServiceEvent(WPARAM inWParam, LPARAM inLParam)
{
	if (WSAGETSELECTERROR(inLParam) && !(HIWORD(inLParam)))
    {
		dlog( kDebugLevelError, "OnServiceEvent: window error\n" );
    }
    else
    {
		SOCKET sock = (SOCKET) inWParam;

		// iterate thru list
		ServiceRefList::iterator begin = m_serviceRefList.begin();
		ServiceRefList::iterator end   = m_serviceRefList.end();

		while (begin != end)
		{
			DNSServiceRef ref = *begin++;

			check(ref != NULL);

			if ((SOCKET) DNSServiceRefSockFD(ref) == sock)
			{
				DNSServiceProcessResult(ref);
				break;
			}
		}
	}

	return ( 0 );
}
Exemplo n.º 3
0
BOOL OnWSAAccept(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	int rc;
	if(WSAGETSELECTERROR(lParam)!=0)
	{
		MessageBox(0,TEXT("Ошибка при получении асинхронного запроса[1]"),TEXT("Ошибка"),MB_OK);
		ServerStop(hWnd);
		return FALSE;
	}
	int acc_sin_len = sizeof(acc_sin);
	rab_socket = accept(srv_socket,(LPSOCKADDR) &acc_sin,(int FAR*) &acc_sin_len);
	if(rab_socket == INVALID_SOCKET)
	{
		MessageBox(0,TEXT("Ошибка при получении асинхронного запроса[2]"),TEXT("Ошибка"),MB_OK);
		ServerStop(hWnd);
		return FALSE;
	}
	rc = WSAAsyncSelect(rab_socket,hWnd,WSA_NETEVENT,FD_READ|FD_CLOSE);
	if(rc>0)
	{
		MessageBox(0,TEXT("Ошибка при получении асинхронного запроса[3]"),TEXT("Ошибка"),MB_OK);
		ServerStop(hWnd);
		return FALSE;
	}
	TCHAR wtmp[255];
	wsprintf(wtmp,TEXT("[%lu] Хост %lu подключён"), clock(), acc_sin.sin_addr.s_addr);
	SendMessage(hLst,LB_ADDSTRING,0,(LPARAM)wtmp);
}
Exemplo n.º 4
0
LRESULT CAsynSocket::CSocketWnd::OnWinsocketNotify(WPARAM wParam, LPARAM lParam)
{
	if (wParam == 0 && lParam == 0)
		return 0;

	int nErrorCode = WSAGETSELECTERROR(lParam);
	if(m_bResolved && m_hAsyncGetHostByName == (HANDLE)wParam)	//需要解析主机名
	{
		m_hAsyncGetHostByName	=	NULL;
		m_bResolved				=	FALSE;

		m_pSocket->_OnResolve(nErrorCode);
	}
	else	//已经获取到了主机名,是其他Socket消息
	{
		if((SOCKET)wParam!=m_pSocket->m_hSocket)
			return 0;

		//////////////////////////////////////////////////////////////////
		//lParam = 658833440;	在有proxy的环境容易发生此类消息进行过滤
		//////////////////////////////////////////////////////////////////
		UINT nEvent = WSAGETSELECTEVENT(lParam);
		if(nEvent==FD_CLOSE && nErrorCode==WSAECONNABORTED)
			return 0;

		switch (nEvent)
		{
		case FD_READ:				//读
			{
				DWORD nBytes;
				if (!m_pSocket->IOCtl(FIONREAD, &nBytes))
					nErrorCode = WSAGetLastError();
				if (nBytes != 0 || nErrorCode != 0)
					m_pSocket->_OnReceive(nErrorCode);
			}
			break;
		case FD_WRITE:				//写
			m_pSocket->_OnSend(nErrorCode);
			break;
		case FD_OOB:
			m_pSocket->_OnOOBData(nErrorCode);
			break;
		case FD_ACCEPT:				//接收
			m_pSocket->_OnAccept(nErrorCode);
			break;
		case FD_CONNECT:			//连接
			m_pSocket->_OnConnect(nErrorCode);
			break;
		case FD_CLOSE:				//关闭
			m_pSocket->_OnClose(nErrorCode);
			break;
		default:
			break;
		}
	}
	return 0;
}
Exemplo n.º 5
0
HRESULT CMBCBaseObj::NetCall_Write(CMBCSocket* pMBCSock, WPARAM wParam, LPARAM lParam )
{
	int nErr =WSAGETSELECTERROR(lParam);
	int nEvent = WSAGETSELECTEVENT(lParam);
	SOCKET socRecv = (SOCKET)wParam;
	//not process
	ASSERT(FALSE);
	return S_OK;
}
Exemplo n.º 6
0
//=============================================================================
int XSocket::iOnSocketEvent(WPARAM wParam, LPARAM lParam)
{
 int WSAEvent;
 PutLogList("iOnSocketEvent");
	if (m_cType != XSOCK_NORMALSOCK) return XSOCKEVENT_SOCKETMISMATCH;
	if (m_cType == NULL) return XSOCKEVENT_NOTINITIALIZED;

	if ((SOCKET)wParam != m_Sock) return XSOCKEVENT_SOCKETMISMATCH;
	WSAEvent = WSAGETSELECTEVENT(lParam);

	switch (WSAEvent) {
	case FD_CONNECT:
		if (WSAGETSELECTERROR(lParam) != 0) {
			if (bConnect(m_pAddr, m_iPortNum, m_uiMsg) == FALSE) return XSOCKEVENT_SOCKETERROR;

			return XSOCKEVENT_RETRYINGCONNECTION;
		}
		else {
			m_bIsAvailable = TRUE;
			return XSOCKEVENT_CONNECTIONESTABLISH;
		}
		break;

	case FD_READ:
		if (WSAGETSELECTERROR(lParam) != 0) {
			m_WSAErr = WSAGETSELECTERROR(lParam);
			return XSOCKEVENT_SOCKETERROR;
		}
		else return _iOnRead();
		break;

	case FD_WRITE:
		return _iSendUnsentData();
		break;

	case FD_CLOSE:
		m_cType = XSOCK_SHUTDOWNEDSOCK;
		return XSOCKEVENT_SOCKETCLOSED;
		break;
	}

	return XSOCKEVENT_UNKNOWN;
}
Exemplo n.º 7
0
int handleNetworkDatagramEvents(WPARAM wParam,LPARAM lParam) {
    switch(WSAGETSELECTEVENT(lParam)) {

    case FD_WRITE:
        javanotify_datagram_event(
            JAVACALL_EVENT_DATAGRAM_SENDTO_COMPLETED,
            (javacall_handle)wParam,
            (WSAGETSELECTERROR(lParam) == 0) ? JAVACALL_OK : JAVACALL_FAIL);
#ifdef ENABLE_NETWORK_TRACING
        fprintf(stderr, "[UDP] FD_WRITE)\n");
#endif
        return 0;
    case FD_READ:
#ifdef ENABLE_JSR_120
        if (JAVACALL_OK == try_process_wma_emulator((javacall_handle)wParam)) {
            return 0;
        }
#endif

        javanotify_datagram_event(
            JAVACALL_EVENT_DATAGRAM_RECVFROM_COMPLETED,
            (javacall_handle)wParam,
            (WSAGETSELECTERROR(lParam) == 0) ? JAVACALL_OK : JAVACALL_FAIL);
#ifdef ENABLE_NETWORK_TRACING
        fprintf(stderr, "[UDP] FD_READ)\n");
#endif
        return 0;
    case FD_CLOSE:
#ifdef ENABLE_NETWORK_TRACING
        fprintf(stderr, "[UDP] FD_CLOSE)\n");
#endif
        return 0;
    default:
#ifdef ENABLE_NETWORK_TRACING
        fprintf(stderr, "[UDP] unsolicited event %d)\n",
                WSAGETSELECTEVENT(lParam));
#endif
        break;
    }//end switch
    return 0;
}
Exemplo n.º 8
0
LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	switch (uMsg)
	{	
	case WM_SOCKET:
		{
			// 取得有事件发生的套节字句柄
			SOCKET s = wParam;
			// 查看是否出错
			if(WSAGETSELECTERROR(lParam))
			{
				::closesocket(s);
				return 0;
			}
			// 处理发生的事件
			switch(WSAGETSELECTEVENT(lParam))
			{
			case FD_ACCEPT:		// 监听中的套接字检测到有连接进入
				{
					SOCKET client = ::accept(s, NULL, NULL);
					::WSAAsyncSelect(client, hWnd, WM_SOCKET, FD_READ|FD_WRITE|FD_CLOSE);
				}
				break;
			case FD_WRITE:
				{
				}
				break;
			case FD_READ:
				{
					char szText[1024] = { 0 };
					if(::recv(s, szText, 1024, 0) == -1)
						::closesocket(s);
					else
						printf("接收数据:%s", szText);
				}
				break;
			case FD_CLOSE:
				{ 
					::closesocket(s);
				}
				break;
			}
		}
		return 0;
	case WM_DESTROY:
		::PostQuitMessage(0) ;
		return 0 ;
	}

	// 将我们不处理的消息交给系统做默认处理
	return ::DefWindowProc(hWnd, uMsg, wParam, lParam);
}
Exemplo n.º 9
0
HRESULT CMBCBaseObj::NetCall_Close(CMBCSocket* pMBCSock, WPARAM wParam, LPARAM lParam )
{
	int nErr =WSAGETSELECTERROR(lParam);
	int nEvent = WSAGETSELECTEVENT(lParam);
	SOCKET socRecv = (SOCKET)wParam;
	if (socRecv ==  *m_pSockBase)
	{
		ChangeSelfState(MBCSTATE_NETERR);
	}
	TRACE("\n Sock Closed");

	return S_OK;
}
Exemplo n.º 10
0
/*------------------------------------------------------------------------------------------------------------------
--      FUNCTION: socket_event
--
--      DATE: Febuary 6 2014
--      REVISIONS: none
--
--      DESIGNER: Ramzi Chennafi
--      PROGRAMMER: Ramzi Chennafi
--
--      INTERFACE: void socket_event(HWND hwnd, WPARAM wParam, LPARAM lParam), where wParam is the socket and lParam is the error message.
--		The hwnd is the parent HWND.
--
--      RETURNS: void
--
--      NOTES:
--      Asynchronously responds to socket accept and read events on the server side of the program. Will reallocate the
--		SocketInfo structure whenever a transfer ends.
----------------------------------------------------------------------------------------------------------------------*/
void socket_event(HWND hwnd, WPARAM wParam, LPARAM lParam){

	SETTINGS * st = (SETTINGS*)GetClassLongPtr(hwnd, 0);
	char msg[MAX_SIZE];

	if (WSAGETSELECTERROR(lParam))
	{
		sprintf_s(msg, "WSAGETSELECTERROR %d, connection failed.\n", WSAGETSELECTERROR(lParam));
		activity(msg, EB_STATUSBOX);
		closesocket(st->server_socket);
	}
	else
	{
		switch (WSAGETSELECTEVENT(lParam))
		{
		case FD_ACCEPT:
			accept_data(hwnd, wParam);
			break;
		case FD_READ:
			if (st->protocol == TCP){
				if (read_tcp(hwnd, st->server_socket) >= 1){
					if ((SocketInfo = (LPSOCKET_INFORMATION)GlobalAlloc(GPTR, sizeof(SOCKET_INFORMATION))) == NULL){
						activity("GlobalAlloc() failed with error\n", EB_STATUSBOX);
					}
					SocketInfo->header_received = 0; // transmission ends, program waits for a new header
				}
			}
			else{
				if (read_udp(hwnd, st->server_socket) >= 1){
					if ((SocketInfo = (LPSOCKET_INFORMATION)GlobalAlloc(GPTR, sizeof(SOCKET_INFORMATION))) == NULL){
						activity("GlobalAlloc() failed with error\n", EB_STATUSBOX);
					}
					SocketInfo->header_received = 0;
				}
			}
		}
	}
}
Exemplo n.º 11
0
HRESULT CMBCBaseObj::NetCall_Connect(CMBCSocket* pMBCSock, WPARAM wParam, LPARAM lParam )
{
	int nErr =WSAGETSELECTERROR(lParam);
	int nEvent = WSAGETSELECTEVENT(lParam);
	SOCKET socRecv = (SOCKET)wParam;
	//i am client
	ASSERT(socRecv == *pMBCSock);
	if (nErr ==S_OK)
	{	
		//CFWriteLog("==connected, soc = %d, ip =%s", socRecv, Addr2String(pMBCSock->m_addrs.addrRemote).c_str());
		ChangeSelfState(MBCSTATE_OK);
	}
	return S_OK;
}
Exemplo n.º 12
0
afx_msg LRESULT CServerDlg::OnSock(WPARAM wParam, LPARAM lParam)
{
	if (WSAGETSELECTERROR(lParam))
	{
		return 1;
	}
	switch (WSAGETSELECTEVENT(lParam))
	{
	case FD_ACCEPT:
	{
		sockaddr_in ClientAddr;
		int nSize = sizeof(ClientAddr);

		m_ClientSock = accept(m_ListenSock, (SOCKADDR *)&ClientAddr, &nSize);
		WSAAsyncSelect(m_ClientSock, GetSafeHwnd(), WM_SERVER, FD_READ | FD_CLOSE);
		char *p = inet_ntoa(ClientAddr.sin_addr);
		m_StrMsg.Format("请求IP:%s:%d", p, ntohs(ClientAddr.sin_port));

		char szBuf[MAXBYTE] = { 0 };
		lstrcpy(szBuf, m_StrMsg.GetBuffer());
		send(m_ClientSock, (const char*)&szBuf, sizeof(szBuf), 0);

		break;
	}
	case FD_READ:
	{
		char szBuf[MAXBYTE] = { 0 };
		recv(m_ClientSock, szBuf, MAXBYTE, 0);
		m_StrMsg = "对方发来命令";
		m_StrMsg += szBuf;

		break;
	}
	case FD_CLOSE:
	{
		closesocket(m_ClientSock);
		m_StrMsg = "对方关闭连接";
		break;
	}
	}
	CString temp;
	GetDlgItemText(IDC_EDIT, temp);

	m_StrMsg += "\r\n----------------------\r\n";
	m_StrMsg += temp;

	SetDlgItemText(IDC_EDIT, m_StrMsg);
	m_StrMsg = "";
	return 0;
}
Exemplo n.º 13
0
BOOL CALLBACK ClientProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {
	LPSOCKET_INFO	SocketInfo;
	DWORD			SendBytes;
	LPSTR			psBuff;

	psBuff = (LPSTR)VirtualAlloc((LPVOID)NULL, (DWORD)(255),
					MEM_COMMIT, PAGE_READWRITE);
	
	if (WSAGETSELECTERROR(lParam)) {
		wsprintf(psBuff, (LPCTSTR)"Socket failed with error %d", WSAGetLastError());
		AppendLog(psBuff);
	}
	else {
		switch (WSAGETSELECTEVENT(lParam)) {
			case FD_CONNECT:
				CreateSocketInfo(wParam);
				break;

			case FD_WRITE:
				SocketInfo = GetSocketInfo(wParam);

				if (SocketInfo->DataBuff.len == 0) {
					SocketInfo->DataBuff.buf = SocketInfo->Buffer;
					SocketInfo->DataBuff.len = 0;
				}

				if (WSASend(SocketInfo->Socket, &(SocketInfo->DataBuff), 1, &SendBytes,
					0, NULL, NULL) == SOCKET_ERROR) {
						if (WSAGetLastError() != WSAEWOULDBLOCK) {
							wsprintf(psBuff, (LPCTSTR)"WSASend() failed with error %d", WSAGetLastError());
							AppendLog(psBuff);
							//FreeSocketInfo(wParam);
						}
				}
				else { // Update the byte count
					SocketInfo->BytesSEND += SendBytes;
				}
				break;

			case FD_CLOSE:
				wsprintf(psBuff, (LPCTSTR)"Closing socket %d", wParam);
				AppendLog(psBuff);
				FreeSocketInfo(wParam);
				break;
		}
		return FALSE;
	}

	return FALSE;
}
Exemplo n.º 14
0
void UDPSocket::slotProcessWSAEvent(int socket, int lParam) {
    MSG msg;
    msg.wParam = socket;
    msg.lParam = lParam;
    PMSG pMsg = &msg;

    // Filtering out messages for other sockets.
    if (pMsg->wParam != socket_) {
        return;
    }

    if (WSAGETSELECTERROR(pMsg->lParam)) {
        qDebug("UDPSocket::slotProcessWSAEvent(): %d: Socket failed. Error: %d",
               (int) pMsg->wParam, WSAGETSELECTERROR(pMsg->lParam));
        return;
    }

    switch (WSAGETSELECTEVENT(pMsg->lParam)) {
        case FD_READ:
            qDebug("UDPSocket::slotProcessWSAEvent: %d: FD_READ.",
                   (int) pMsg->wParam);
            receive(pMsg);
            break;

        case FD_WRITE:
            qDebug("UDPSocket::slotProcessWSAEvent: %d: FD_WRITE.",
                   (int) pMsg->wParam);
            send(pMsg);
            break;

        default:
            Socket::slotProcessWSAEvent(pMsg);
            break;
    }

    return;
}
Exemplo n.º 15
0
HRESULT CMBCHeartBeatObj::NetCall_Connect(CMBCSocket* pMBCSock, WPARAM wParam, LPARAM lParam )
{
	int nErr =WSAGETSELECTERROR(lParam);
	int nEvent = WSAGETSELECTEVENT(lParam);
	SOCKET socRecv = (SOCKET)wParam;
	//i am client
	ASSERT(socRecv == *pMBCSock);
	if (nErr ==S_OK)
	{	
		m_timerLive.SetTimer(IDTIMER_LIVECHECK, INTERVAL_LIVECHECK, this, (LPARAM)this, WT_EXECUTEDEFAULT, 1000);
		TRACE("\n Sock Connected");

	}
	return CMBCBaseObj::NetCall_Connect(pMBCSock, wParam, lParam);
}
Exemplo n.º 16
0
//
/// DoNotification() is the SocketWindow's protected internal notification system.
//
TResult TSocketWindow::DoNotification(TParam1 param1, TParam2 param2)
{
  SOCKET socket = param1;
  int     error   = (int)WSAGETSELECTERROR(param2);

  if (socket != SocketParent->Handle)
    return 0;

  switch (WSAGETSELECTEVENT(param2)) {
    case FD_READ:
      if (WindowNotification && (NotificationSet & NotifyRead)) {
        return WindowNotification->SendMessage(MsgSocketNotification, param1, param2);
      }
      SocketParent->DoReadNotification(socket, error);
      break;
    case FD_WRITE:
      if (WindowNotification && (NotificationSet & NotifyWrite)) {
        return WindowNotification->SendMessage(MsgSocketNotification, param1, param2);
      }
      SocketParent->DoWriteNotification(socket, error);
      break;
    case FD_OOB:
      if (WindowNotification && (NotificationSet & NotifyOOB)) {
        return WindowNotification->SendMessage(MsgSocketNotification, param1, param2);
      }
      SocketParent->DoOOBNotification(socket, error);
      break;
    case FD_ACCEPT:
      if (WindowNotification && (NotificationSet & NotifyAccept)) {
        return WindowNotification->SendMessage(MsgSocketNotification, param1, param2);
      }
      SocketParent->DoAcceptNotification(socket, error);
      break;
    case FD_CONNECT:
      if (WindowNotification && (NotificationSet & NotifyConnect)) {
        return WindowNotification->SendMessage(MsgSocketNotification, param1, param2);
      }
      SocketParent->DoConnectNotification(socket, error);
      break;
    case FD_CLOSE:
      if (WindowNotification && (NotificationSet & NotifyClose)) {
        return WindowNotification->SendMessage(MsgSocketNotification, param1, param2);
      }
      SocketParent->DoCloseNotification(socket, error);
  }
  return 1;
}
Exemplo n.º 17
0
LRESULT BTCtcp::ProcessNotifications(HWND hWnd, LPARAM lParam)
{
	int wsaErr = WSAGETSELECTERROR(lParam);
	unsigned int ui=0;
	TCHAR szText[MAX_LOADSTRING];
	switch (WSAGETSELECTEVENT(lParam))
	{
	case FD_ACCEPT:
		break;
	case FD_CONNECT:						// connect() operation terminated
		if (wsaErr == ERROR_SUCCESS) {		// and no error --> we are connected :)
			iBTCSocketStatus = 5;
			iBTCError = ERROR_SUCCESS;
			ui=IDS_SS_CONNECTED;
		}
		else {
			iBTCSocketStatus = 3;			// "connecting..." status did not complete successfully
			iBTCError = wsaErr;				// save error information
			iBTCNodeStatus=0;				// no connection
			ui=IDS_SS_FAILED;
			ShowError(IDS_Err_Socket, iBTCError);
		}
		break;
	case FD_WRITE:
		bWriteReady = true;		// we are notified we can send (again)
		WriteToSocket();		// try to send data if something is waiting in our buffer
		break;
	case FD_READ:
		ReadFromSocket(hWnd);	// data is awaiting
		break;
	case FD_CLOSE:				// connection has been closed
		closesocket(skBTC);		// release the socket
		iBTCSocketStatus=1;
		iBTCNodeStatus=0;
		ui=IDS_SS_NOTHING;
		break;
	}
	if (ui) {	// show something to user
		LoadString(hInst, ui, szText, MAX_LOADSTRING);
		SetWindowText(hStaticSocketStatus, szText);  // update status window related to our TCP connection
		InvalidateRect(hWnd, &rcSocketStatus, true);
		LoadString(hInst, (iBTCSocketStatus>3) ? IDS_DISCONNECT:IDS_CONNECT, szText, MAX_LOADSTRING);
		SetDlgItemText(hWnd, IDC_BTNBTCCONNECT, szText);
		EnableWindow(GetDlgItem(hWnd, IDC_BTNSQLCONNECT), iBTCSocketStatus<2);
	}
	return 0;
}
Exemplo n.º 18
0
void PASCAL CAsyncSocket::DoCallBack(WPARAM wParam, LPARAM lParam)
{
	if (wParam == 0 && lParam == 0)
		return;

	// Has the socket be closed?
	CAsyncSocket* pSocket = CAsyncSocket::LookupHandle((SOCKET)wParam, TRUE);

	// If yes ignore message
	if (pSocket != NULL)
		return;

	pSocket = CAsyncSocket::LookupHandle((SOCKET)wParam, FALSE);
	if (pSocket == NULL)
	{
		// Must be in the middle of an Accept call
		pSocket = CAsyncSocket::LookupHandle(INVALID_SOCKET, FALSE);
		ASSERT(pSocket != NULL);
		pSocket->m_hSocket = (SOCKET)wParam;
		CAsyncSocket::DetachHandle(INVALID_SOCKET, FALSE);
		CAsyncSocket::AttachHandle(pSocket->m_hSocket, pSocket, FALSE);
	}

	int nErrorCode = WSAGETSELECTERROR(lParam);
	switch (WSAGETSELECTEVENT(lParam))
	{
	case FD_READ:
		pSocket->OnReceive(nErrorCode);
		break;
	case FD_WRITE:
		pSocket->OnSend(nErrorCode);
		break;
	case FD_OOB:
		pSocket->OnOutOfBandData(nErrorCode);
		break;
	case FD_ACCEPT:
		pSocket->OnAccept(nErrorCode);
		break;
	case FD_CONNECT:
		pSocket->OnConnect(nErrorCode);
		break;
	case FD_CLOSE:
		pSocket->OnClose(nErrorCode);
		break;
	}
}
Exemplo n.º 19
0
LRESULT Client::HandleEvent(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	switch (msg) 
	{
	case WM_SOCKET:
		sPlayerMain.OnSocketEvent(wParam, WSAGETSELECTERROR(lParam), WSAGETSELECTEVENT(lParam));
		return 0;
	case WM_CREATE:
		LoadContent();
		return 0;

	case WM_KEYDOWN:
		KeyDown(wParam);
		return 0;

	case WM_PAINT:	
		Draw(hwnd);
		return 0;

	case WM_LBUTTONDBLCLK:
		MouseLDButtonDown(lParam);
		return 0;

	case WM_MBUTTONDOWN:
		MouseMButtonDown(lParam);
		return 0;

	case WM_LBUTTONDOWN:
		MouseLButtonDown(lParam);
		return 0;

	case WM_RBUTTONDOWN:
		MouseRButtonDown(lParam);
		return 0;

	case WM_MOUSEMOVE:
		MouseMove(lParam);
		return 0;

	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, msg, wParam, lParam);
}
Exemplo n.º 20
0
LONG
ExplorerBarWindow::OnServiceEvent(WPARAM inWParam, LPARAM inLParam)
{
	if (WSAGETSELECTERROR(inLParam) && !(HIWORD(inLParam)))
    {
		dlog( kDebugLevelError, "OnServiceEvent: window error\n" );
    }
    else
    {
		SOCKET sock = (SOCKET) inWParam;

		// iterate thru list
		ServiceRefList::iterator it;

		for (it = m_serviceRefs.begin(); it != m_serviceRefs.end(); it++)
		{
			DNSServiceRef ref = *it;

			check(ref != NULL);

			if ((SOCKET) DNSServiceRefSockFD(ref) == sock)
			{
				DNSServiceErrorType err;

				err = DNSServiceProcessResult(ref);

				if (err != 0)
				{
					CString s;

					s.LoadString( IDS_MDNSRESPONDER_NOT_AVAILABLE );
					mTree.DeleteAllItems();
					mTree.InsertItem( s, 0, 0, TVI_ROOT, TVI_LAST );

					Stop(ref);
				}

				break;
			}
		}
	}

	return ( 0 );
}
void CListener::ProcessSocketMsg(WPARAM wParam, LPARAM lParam)
{

	if (WSAGETSELECTERROR(lParam))
	{
		// Display the error and close the socket
		CloseConnection(wParam);
		return;
	}

	switch(WSAGETSELECTEVENT(lParam))
	{
		case FD_ACCEPT:
			{
				SOCKADDR_IN ClientAddr = {0};
				int	iLen = sizeof(ClientAddr);
				accept(wParam, (LPSOCKADDR)&ClientAddr, &iLen);
				break;
			}
		case FD_READ:
			{
				// Receive data from the socket in
				// wParam
				ProcessRead(wParam);
				break;
			}

		case FD_WRITE:
			{
				// The socket in wParam is ready
				// for sending data
				break;
			}

		case FD_CLOSE:
			{
				// The connection is now closed	
				CloseConnection(wParam);
				break;
			}
	}
}
Exemplo n.º 22
0
LRESULT CFrontier_API_SVDlg::OnReadTcp(WPARAM wParam, LPARAM lParam)
{
	if (WSAGETSELECTERROR(lParam))
	{
		AfxMessageBox("OnRead 发生错误!");
	}
	else if (WSAGETSELECTEVENT(lParam)==FD_READ)
	{
		m_iByteFromGView=recv(m_RobGViewClient, m_chGViewRecvBuff, MaxRecvLength, 0);	 
		if (m_iByteFromGView == SOCKET_ERROR)
		{
			//AfxMessageBox("接收全维视觉信息失败! ");
		}
		else if (lstrlen(m_chGViewRecvBuff) != 0)
		{
			RecGlobViewData(m_chGViewRecvBuff,0);
		}
	}
	return 0;
}
Exemplo n.º 23
0
ULONG CTcpSocket::OnConnect(LPARAM lParam)
{
	int err;
	DWORD dwThreadId;	// needed for CreateThread

	err = WSAGETSELECTERROR(lParam);
	// Check to see if there was an error on the connection attempt.
	if (err) 
	{
		// Some kind of error occurred.
		if (err == WSAECONNREFUSED) 
		{
			OutputDebugString(m_strPeerName + _T(" 处没有应用程序应答\n"));
		} 
		else 
		{
			OutputDebugString(m_strPeerName + _T(" 没有在网络上\n"));
		}
		goto Error;
	}

	WSAAsyncSelect(m_socket, m_hWnd, 0, 0);
	// Put Connection in Event Object Notification Mode.
	WSAEventSelect(m_socket, m_hNetEvent, FD_READ | FD_WRITE | FD_CLOSE);

	// Start the I/O thread, and save the thread handle.
	m_hIOThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadFunc, this, 0, &dwThreadId);
	if (m_hIOThread == NULL) 
	{
		OutputDebugString(_T("CreateThread() failed in OnConnect()\n"));
		goto Error;
	}

	OutputDebugString(m_strPeerName + _T(" joined the meeting\n"));

	return m_uPeerIP;

Error:
	Unprepare();
	return 0;
}
Exemplo n.º 24
0
/*---------------------------------------------------
	called when the window received WSOCK_SELECT.
	receive SNTP data and set time.
---------------------------------------------------*/
void OnReceive(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
	struct sockaddr_in serversockaddr;
	struct NTP_Packet NTP_Recv;
	int sockaddr_Size;

	if(g_socket == -1) return;
	if(WSAGETSELECTERROR(lParam))
	{
		SocketClose(hwnd, "failed to receive");
		return;
	}
	if(g_socket != (int)wParam ||
		WSAGETSELECTEVENT(lParam) != FD_READ) return;

	// receive data
	sockaddr_Size = sizeof(serversockaddr);
	if(recvfrom(g_socket, (char *)&NTP_Recv, sizeof(NTP_Recv), 0,
		(struct sockaddr *)&serversockaddr, &sockaddr_Size) == SOCKET_ERROR)
	{
		SocketClose(hwnd, "recvfrom() failed");
		return;
	}

	// if Leap Indicator is 3
	/*
	if(ntohl(NTP_Recv.Control_Word) >> 30 == 3)
	{
		SocketClose(hwnd, "server is unhealthy");
		return;
	}
	*/

	// set system time
	SynchronizeSystemTime(ntohl(NTP_Recv.transmit_timestamp_seconds),
		ntohl(NTP_Recv.transmit_timestamp_fractions));

	// close socket
	SocketClose(hwnd, NULL);
}
Exemplo n.º 25
0
void WAsyncSocket::SocketMessage(WPARAM wparam,LPARAM lparam)
{
	// wparam is the socket number, lparam is the event code (lower word) and error code (upper word)
	int event_code=WSAGETSELECTEVENT(lparam);	// lower word of lparam
	int error_code=WSAGETSELECTERROR(lparam);	// upper word of lparam

	switch(event_code)
	{
		case FD_CONNECT:
		{
			OnConnect(error_code);
			break;
		}
		case FD_ACCEPT:
		{
			OnAccept(error_code);
			break;
		}
		case FD_READ:
		{
			OnReceive(error_code);
			break;
		}
		case FD_WRITE:
		{
			OnSend(error_code);
			break;
		}
		case FD_CLOSE:
		{
			OnClose(error_code);
			break;
		}
		default:
		{
			// Unknown Socket Message
			break;
		}
	}
}
Exemplo n.º 26
0
void Socket::slotProcessWSAEvent(PMSG pMsg) {
    if (WSAGETSELECTERROR(pMsg->lParam)) {
        //qDebug("Socket::slotProcessWSAEvent(): %d: Socket failed with error %d",
              //(int) pMsg->wParam, WSAGETSELECTERROR(pMsg->lParam));
        return;
    }

    if (pMsg->wParam != socket_) {
        return;
    }

    switch (WSAGETSELECTEVENT(pMsg->lParam)) {

        case FD_CLOSE:
            qDebug("Socket::slotProcessWSAEvent(); %d: FD_CLOSE.",
                   (int) pMsg->wParam);
            close(pMsg);
            break;
    }

    return;
}
Exemplo n.º 27
0
/*---------------------------------------------------
  called when the window received WSOCK_SELECT.
  receive SNTP data and set time.
---------------------------------------------------*/
void OnReceive(HWND hwndSNTP, WPARAM wParam, LPARAM lParam)
{
	struct sockaddr_in serversockaddr;
	struct NTP_Packet NTP_Recv;
	int sockaddr_Size;
	
	if(m_socket == INVALID_SOCKET) return;
	if(WSAGETSELECTERROR(lParam))
	{
		SocketClose(hwndSNTP, "failed to receive");
		return;
	}
	if(m_socket != (SOCKET)wParam ||
		WSAGETSELECTEVENT(lParam) != FD_READ) return;
	
	// receive data
	m_dwTickCountOnRecv = timeGetTime();
	sockaddr_Size = sizeof(serversockaddr);
	if(recvfrom(m_socket, (char *)&NTP_Recv, sizeof(NTP_Recv), 0,
		(struct sockaddr *)&serversockaddr, &sockaddr_Size) == SOCKET_ERROR)
	{
		SocketClose(hwndSNTP, "recvfrom() failed");
		return;
	}
	
	// if Leap Indicator is 3
	if((NTP_Recv.Control_Byte >> 6) == 3)
	{
		SocketClose(hwndSNTP, "server is unhealthy");
		return;
	}
	
	// set system time
	SynchronizeSystemTime(hwndSNTP, &NTP_Recv);
	
	// close socket
	SocketClose(hwndSNTP, NULL);
}
LRESULT
CConfigPropertySheet::OnDataReady(WPARAM inWParam, LPARAM inLParam)
{
	if (WSAGETSELECTERROR(inLParam) && !(HIWORD(inLParam)))
	{
		dlog( kDebugLevelError, "OnSocket: window error\n" );
	}
	else
	{
		SOCKET sock = (SOCKET) inWParam;

		if ( m_browseDomainsRef && DNSServiceRefSockFD( m_browseDomainsRef ) == (int) sock )
		{
			DNSServiceProcessResult( m_browseDomainsRef );
		}
		else if ( m_regDomainsRef && DNSServiceRefSockFD( m_regDomainsRef ) == (int) sock )
		{
			DNSServiceProcessResult( m_regDomainsRef );
		}
	}

	return 0;
}
Exemplo n.º 29
0
BOOL CALLBACK IDAconnector::socket_proc (HWND h_dialog, UINT u_message, WPARAM w_param, LPARAM l_param)
{
    // we are only interested in our socket callback.
    if (u_message == SOCKET_MSG)
    {
        if (WSAGETSELECTERROR(l_param))
        {
            cleanup();
            msg("[!] "PLUGIN_NAME"> Connection to server severed.\n");
            return FALSE;
        }

        switch(WSAGETSELECTEVENT(l_param))
        {
            // receiving data.
            case FD_READ:
                if (!connector_pull())
                {
                    cleanup();
                    msg("[!] "PLUGIN_NAME"> Connection to server severed.\n");
                }
                break;

            // sending data.
            case FD_WRITE:
                break;

            // server connection closed.
            case FD_CLOSE:
                cleanup();
                msg("[!] "PLUGIN_NAME"> Connection to server severed.\n");
                break;
        }
    }

    return FALSE;
}
Exemplo n.º 30
0
Arquivo: pal.c Projeto: mixtile/xskit
int xsPalHandleSocketEvent(UINT message, WPARAM wParam, LPARAM lParam)
{
	DWORD dwError, dwEvent;
	xsSysEvent evt = {0};

	dwError = WSAGETSELECTERROR(lParam);
	dwEvent = WSAGETSELECTEVENT(lParam);

	evt.data.socket.sock = wParam;

	if (dwError == 0)
		evt.data.socket.status = XS_EC_OK;
	else
		evt.data.socket.status = XS_EC_ERROR;	// TODO: translate error code

	switch (dwEvent)
	{
	case FD_CONNECT:
		evt.type = XS_EVT_SOCK_CONNECT;
		break;
	case FD_READ:
		evt.type = XS_EVT_SOCK_READ;
		break;
	case FD_WRITE:
		evt.type = XS_EVT_SOCK_WRITE;
		break;
	case FD_CLOSE:
		evt.type = XS_EVT_SOCK_CLOSE;
		break;
	default:	// ignore other event
		return 0;
	}

	xsSysEventHandler(&evt);
	return 0;
}