.


:




:

































 

 

 

 





- , . , , , , . - , .
() . : ( ), , , . .

Windows

  • WSA
  • /

  • WSA
  • /

WSA.

?

  #include < winsock2.h > #include < ws2tcpip.h > #include < iostream >   #pragma comment(lib, "Ws2_32.lib")   int main() { return 0; }

Windows Sockets API: C++

, . : ip- HTTP-, , HTTP- (web-, ..).

 

WSA

 

  WSADATA wsaData; int result; result = WSAStartup(MAKEWORD(2, 2), &wsaData); if(result!= 0) { std::cout << " WSAStartup: " << result << std::endl; return 1; }

Windows Windows sockets API (WSA)
WSAStartup WSA WSAData. 0, , .

 

  SOCKET clientSocket = INVALID_SOCKET; clientSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(clientSocket == INVALID_SOCKET) { std::cout << " socket(): " << WSAGetLastError() << std::endl; WSACleanup(); return 1; }

socket . , 0 (INVALID_SOCKET).

?

  #define ip "127.0.0.1" #define port 80   sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr(ip); clientService.sin_port = htons(port);   int result; result = connect( clientSocket, reinterpret_cast< SOCKADDR* >(&clientService), sizeof(clientService) ); if(result!= 0) { std::cout << " connect(): " << WSAGetLastError() << std::endl; WSACleanup(); return 1; }

, .
, ip- (). connect, 0 .
Ip- sockaddr.

?

  int result; char data[] = "Test"; result = send(clientSocket, data, static_cast< int >(strlen(data)), 0); if(result < 0) { std::cout << " send(): " << WSAGetLastError() << std::endl; return 1; }

send. , .
, , , .

?

  #define bufsize 256   char buf[bufsize]; int r; do { r = recv(clientSocket, buf, bufsize, 0); if(r > 0) std::cout << " " << r << " " << std::endl; else if(r == 0) std::cout << " " << std::endl; else std::cout << " recv(): " << WSAGetLastError() << std::endl; } while(r > 0);

recv .
, bufsize .

 

  closesocket(clientSocket); // WSACleanup() WSACleanup();

, WSA MSDN: Winsock reference.

Windows Sockets API: C++

() , .

, , , , -. - ( , " "). - , .

WSA

 

  int iResult;   WSAData d; iResult = WSAStartup(MAKEWORD(2, 2), &d); if(iResult!= 0) { std::cout << "Error at WSAStartup: " << iResult; return 1; }

Windows Sockets API.

 

  #define DEFAULT_PORT "27015"   struct addrinfo *result = NULL, *ptr = NULL, hints; ZeroMemory(&hints, sizeof (hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = AI_PASSIVE;   iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result); if (iResult!= 0) { std::cout << " getaddrinfo: " << iResult; WSACleanup(); return 1; }

getaddrinfo sockaddr.

  • AF_INET , IP .
  • SOCK_STREAM .
  • IPPROTO_TCP TCP .
  • 270015 , .

 

  SOCKET listenSocket = INVALID_SOCKET; listenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol); if(listenSocket == INVALID_SOCKET) { std::cout << "Error at socket(): " << WSAGetLastError(); freeaddrinfo(result); WSACleanup(); return 1; }

socket , , , .





:


: 2017-01-21; !; : 636 |


:

:

: , .
==> ...

2008 - | 1633 -


© 2015-2024 lektsii.org - -

: 0.009 .