Advertisement
Guest User

serwer UDP

a guest
Apr 16th, 2011
371
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <winsock.h>
  2.  
  3. #include <iostream>
  4.  
  5. using namespace std;
  6.  
  7. void UDPServer(short nPort);
  8.  
  9. int main()
  10. {
  11.     WORD wVersionRequested = MAKEWORD(2,2);
  12.  
  13.     WSADATA wsadata;
  14.  
  15.     int nRet;
  16.  
  17.     short nPort;
  18.  
  19.     cout << "Serwer UDP" << endl;
  20.  
  21.     cout << "Podaj nr portu, na ktorym mam nasluchiwac: ";
  22.  
  23.     cin >> nPort;
  24.  
  25.     nRet = WSAStartup(wVersionRequested, &wsadata);
  26.  
  27.     if(wsadata.wVersion != wVersionRequested)
  28.     {
  29.         cout << "WSADATA error: " << WSAGetLastError() << endl;
  30.  
  31.         return -1;
  32.     }
  33.  
  34.     UDPServer(nPort);
  35.  
  36.     WSACleanup();
  37.  
  38.     cin.get();
  39.  
  40.     return 0;
  41. }
  42.  
  43. void UDPServer(short nPort)
  44. {
  45.     SOCKET serversocket;
  46.  
  47.     serversocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
  48.  
  49.     if(serversocket == INVALID_SOCKET)
  50.     {
  51.         cout << "SOCKET error: " << WSAGetLastError() << endl;
  52.  
  53.         return;
  54.     }
  55.  
  56.     SOCKADDR_IN serveraddr;
  57.  
  58.     serveraddr.sin_family = AF_INET;
  59.  
  60.     serveraddr.sin_addr.s_addr = INADDR_ANY;
  61.  
  62.     serveraddr.sin_port = htons(nPort);
  63.  
  64.     int nRet;
  65.  
  66.     nRet = bind(serversocket, (LPSOCKADDR)&serveraddr, sizeof(struct sockaddr));
  67.  
  68.     if(nRet == SOCKET_ERROR)
  69.     {
  70.         cout << "bind() error: " << WSAGetLastError() << endl;
  71.  
  72.         closesocket(serversocket);
  73.  
  74.         return;
  75.     }
  76.  
  77.     char Buffer[256];
  78.  
  79.     nRet = gethostname(Buffer, sizeof(Buffer));
  80.  
  81.     if(nRet == SOCKET_ERROR)
  82.     {
  83.         cout << "gethostname() error: " << WSAGetLastError() << endl;
  84.  
  85.         closesocket(serversocket);
  86.  
  87.         return;
  88.     }
  89.  
  90.     cout << "Server o nazwie " << Buffer << " nasluchuje na porcie: " << nPort << endl;
  91.  
  92.     SOCKADDR_IN clientaddr;
  93.  
  94.     int nLength = sizeof(SOCKADDR);
  95.  
  96.     memset(Buffer, 0, sizeof(Buffer));
  97.  
  98.     nRet = recvfrom(serversocket, Buffer, sizeof(Buffer), 0, (LPSOCKADDR)&clientaddr, &nLength);
  99.  
  100.     if(nRet == SOCKET_ERROR)
  101.     {
  102.         cout << "recvfrom() error: " << WSAGetLastError << endl;
  103.  
  104.         closesocket(serversocket);
  105.  
  106.         return;
  107.     }
  108.  
  109.     cout << "Dane otrzymane od klienta: " << Buffer << endl;
  110.  
  111.     cout << "Wpisz komunikat zwrotny: ";
  112.  
  113.     char Message[256];
  114.  
  115.     cin >> Buffer;
  116.  
  117.     nRet = sendto(serversocket, Message, strlen(Message), 0, (LPSOCKADDR)&clientaddr, nLength);
  118.  
  119.     if(nRet == SOCKET_ERROR)
  120.     {
  121.         cout << "sendto() error: " << WSAGetLastError() << endl;
  122.  
  123.         closesocket(serversocket);
  124.  
  125.         return;
  126.     }
  127.  
  128.     closesocket(serversocket);
  129.  
  130.     cin.get();
  131.  
  132.     return;
  133. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement