// winsock2TestClient.cpp : メイン プロジェクト ファイルです。 #include "stdafx.h" #include "winsock2.h" #include #include using namespace std; using namespace System; #pragma comment( lib, "ws2_32.lib" ) int main(array ^args) { wchar_t port_number[10]; DWORD val = GetPrivateProfileString( L"TCPIP" , L"Port_Number" , L"NULL" , &port_number[0] , sizeof( port_number ) , L"./winsock2TestClient.ini" ); wprintf( L"%s\n", port_number ); wchar_t server_ip_address[20]; GetPrivateProfileString( L"TCPIP" , L"Server_IP_Address" , L"NULL" , &server_ip_address[0] , sizeof( server_ip_address ) , L"./winsock2TestClient.ini" ); wprintf( L"%s\n", server_ip_address ); WSADATA wsaData; int ret; SOCKET sock; char buf[32]; struct sockaddr_in server; ret = WSAStartup( MAKEWORD( 2, 0 ), &wsaData ); if ( ret != 0 ) { switch( ret ) { case WSASYSNOTREADY: printf( "WSASYSNOTREADY\n" ); break; case WSAVERNOTSUPPORTED: printf( "WSAVERNOTSUPPORTED\n" ); break; case WSAEINPROGRESS: printf( "WSAEINPROGRESS\n" ); break; case WSAEPROCLIM: printf( "WSAEPROCLIM\n" ); break; case WSAEFAULT: printf( "WSAEFAULT\n" ); break; default: break; } exit( -1 ); } printf( "WSAStartup successful.\n" ); sock = socket( AF_INET, SOCK_STREAM, 0 ); if ( sock == INVALID_SOCKET ) { printf( "error : %d\n", WSAGetLastError() ); exit( -2 ); } printf( "socket successful.\n" ); // 接続先指定用構造体の準備 server.sin_family = AF_INET; server.sin_port = htons( _wtoi( port_number ) ); server.sin_addr.S_un.S_addr = inet_addr( ( const char* )_bstr_t( server_ip_address ) ); // サーバに接続 int st = connect( sock , ( struct sockaddr* )&server , sizeof( server ) ); if ( st == SOCKET_ERROR ) { printf( "st=%d last=%d\n", st, WSAGetLastError() ); perror( "connect error!!" ); exit( -21 ); } // サーバからデータを受信 memset( buf, 0, sizeof( buf ) ); int n = recv( sock, buf, sizeof( buf ), 0 ); if ( n == SOCKET_ERROR ) { switch( WSAGetLastError() ) { case WSAENOTCONN: printf( "ソケットが接続されていません。\n" ); exit( -10 ); default: printf( "error : %d\n", WSAGetLastError() ); exit( -11 ); } } printf( "%d, %s\n", n, buf ); // winsock2の終了処理 WSACleanup(); printf( "WSACleanup successful.\n" ); return 0; }