Advertisement
Guest User

Chat Client

a guest
Jul 12th, 2011
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.92 KB | None | 0 0
  1. /******************************************************
  2.  
  3. Program: Simple chat program
  4. Author: Sri Krishna
  5.  
  6. *******************************************************/
  7.  
  8.  
  9. #include <iostream>
  10. #include <windows.h>
  11. #pragma comment(lib, "ws2_32.lib")
  12.  
  13. SOCKET sock;
  14.  
  15. void recvdata()
  16. {
  17.     while(1)
  18.     {
  19.         char msg[256];
  20.         memset(msg, 0, 256);
  21.         int r = recv(sock, msg, 256, 0);
  22.         if(r == SOCKET_ERROR)
  23.         {
  24.             std::cout << "\n\nServer is disconnected\n\n";
  25.             std::cin.ignore();
  26.             std::cin.get();
  27.             closesocket(sock);
  28.             WSACleanup();
  29.             exit(1);
  30.         }
  31.         else
  32.             std::cout << "Friend: " << msg << std::endl;
  33.     }
  34. }
  35.  
  36. void senddata()
  37. {
  38.     while(1)
  39.     {
  40.         char msg[256];
  41.         memset(msg, 0, 256);
  42.         std::cin.get(msg, 256);
  43.         int ret = send(sock, msg, strlen(msg), 0);
  44.         if(ret == SOCKET_ERROR)
  45.         {
  46.             std::cout << "\n\nServer is disconnected\n\n";
  47.             std::cin.ignore();
  48.             std::cin.get();
  49.             closesocket(sock);
  50.             WSACleanup();
  51.             exit(1);
  52.         }
  53.         std::cin.ignore();
  54.     }
  55. }
  56.  
  57. int main()
  58. {
  59.     WSADATA wsData;
  60.     if(WSAStartup(MAKEWORD(2, 2), &wsData) != 0)
  61.     {
  62.         std::cout << "WSAStartup!\n";
  63.     }
  64.     else
  65.     {
  66.         sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  67.         if(sock == INVALID_SOCKET)
  68.         {
  69.             std::cout << "socket()\n";
  70.             WSACleanup();
  71.         }
  72.         else
  73.         {
  74.             sockaddr_in sin;
  75.             sin.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
  76.             sin.sin_port = htons(626);
  77.             sin.sin_family = AF_INET;
  78.  
  79.             while(connect(sock, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)
  80.                 connect(sock, (sockaddr*)&sin, sizeof(sin));
  81.             std::cout << "Connected to your friend\n\n";
  82.             HANDLE hThread[2];
  83.             DWORD thread1, thread2;
  84.             hThread[0] = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)recvdata, NULL, NULL, &thread1);
  85.             hThread[1] = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)senddata, NULL, NULL, &thread2);
  86.             WaitForMultipleObjects(2, hThread, true, INFINITE);
  87.         }
  88.     }
  89.  
  90.     std::cin.ignore();
  91.     std::cin.get();
  92.     return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement