InitClient.cpp
上传用户:szopptop
上传日期:2013-04-23
资源大小:1047k
文件大小:1k
源码类别:

模拟服务器

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. void InsertLogMsg(LPTSTR lpszMsg);
  3. extern HINSTANCE g_hInst;
  4. extern HWND g_hMainWnd;
  5. BOOL ConnectServer(SOCKET &s, SOCKADDR_IN* addr, UINT nMsgID, LPCTSTR lpServerIP, DWORD dwIP, int nPort, long lEvent)
  6. {
  7. if (s != INVALID_SOCKET)
  8. {
  9. closesocket(s);
  10. s = INVALID_SOCKET;
  11. }
  12. s = socket(AF_INET, SOCK_STREAM, 0);
  13. addr->sin_family = AF_INET;
  14. addr->sin_port = htons(nPort);
  15. if (lpServerIP)
  16. addr->sin_addr.s_addr = inet_addr(lpServerIP);
  17. else
  18. {
  19. DWORD dwReverseIP = 0;
  20. dwReverseIP = (LOBYTE(LOWORD(dwIP)) << 24) | (HIBYTE(LOWORD(dwIP)) << 16) | (LOBYTE(HIWORD(dwIP)) << 8) | (HIBYTE(HIWORD(dwIP)));
  21. addr->sin_addr.s_addr = dwReverseIP;
  22. }
  23. if (WSAAsyncSelect(s, g_hMainWnd, nMsgID, lEvent) == SOCKET_ERROR)
  24. return FALSE;
  25. if (connect(s, (const struct sockaddr FAR*)addr, sizeof(SOCKADDR_IN)) == SOCKET_ERROR)
  26. {
  27. if (WSAGetLastError() == WSAEWOULDBLOCK)
  28. return TRUE;
  29. }
  30. return FALSE;
  31. }
  32. LRESULT OnSockMsg(WPARAM wParam, LPARAM lParam)
  33. {
  34. switch (WSAGETSELECTEVENT(lParam))
  35. {
  36. case FD_CONNECT:
  37. {
  38. InsertLogMsg(_T("肺弊牢 霸捞飘 辑滚客 立加 登菌嚼聪促."));
  39. break;
  40. }
  41. case FD_CLOSE:
  42. {
  43. break;
  44. }
  45. case FD_READ:
  46. {
  47. char szMsg[4096];
  48. int nLen = recv((SOCKET)wParam, szMsg, sizeof(szMsg), 0);
  49. szMsg[nLen] = '';
  50. InsertLogMsg(szMsg);
  51. break;
  52. }
  53. }
  54. return 0;
  55. }