본문 바로가기

엔지니어/C++

socket_test_client

728x90
반응형
#include <stdio.h> 
#include <string.h>
#include <stdlib.h>
#include <winsock2.h>
#include <sys/types.h>
#include <NetCon.h>
#include <atlsocket.h>

#define PORT 10020     /* 접속할 서버 프로그램의 포트 번호 */
int main(int argc, char *argv[])
{
     struct sockaddr_in ServerAddr;       /* 접속할 서버의 주소 구조체 */
     struct hostent *prthost;       /* 호스트표 항목에 대한 포인터*/

     SOCKET client;               /* 클라이언트 소켓의 기술자 */
     int port = PORT;   /* 연결할 서버의 포트 번호 */
     char *host = "localhost";     /* 지역 호스트의 기호 이름을 지정 */
     char buf[10] = "Hello";       /* 서버에게 전달할 데이터("Hello")를 저장한 버퍼 */
     int recvbyte = 0;            /* 서버로부터 수신한 데이터의 길이*/
                                        // 윈도우 운영체제에서 필요한 설정
     WSADATA wsaData;
     if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
          return -1;
     // 연결할 서버 주소 구조체의 내용을 memset 함수로 모두 0으로 초기화한 후에
     // 각 필드에 필요한 값들을 설정한다.
     // 따라서, 값이 설정되지 않은 필드는 0으로 초기화된다.
     memset(&ServerAddr, 0, sizeof(ServerAddr));
     ServerAddr.sin_family = AF_INET; /* 인터넷 주소 체계 설정 */
     ServerAddr.sin_port = htons(port); /* 포트 번호 설정 */
     prthost = gethostbyname(host); /* 호스트 이름에서 IP 주소 설정 */
//     prthost = ;
     memcpy(&ServerAddr.sin_addr, prthost->h_addr, prthost->h_length);
     // 클라이언트의 소켓 생성
     client = socket(AF_INET, SOCK_STREAM, 0);
     if (client < 0)
     {
          printf("클라이언트 소켓 생성 실패\n");
          exit(1);
     }
     //서버와의 연결 접속
     if (connect(client, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr)) < 0)
     {
          printf("서버와 연결 실패\n");
          exit(1);
     }
     // 서버에 연결되었으면, 서버에게 데이터 “Hello" 전송
     send(client, buf, strlen(buf), 0);
     //서버로부터 메시지 수신
     recvbyte = recv(client, buf, sizeof(buf), 0);
     if (recvbyte < 0)
     {
          printf(" 메시지 수신 실패\n");
          exit(1);
     }
     buf[recvbyte] = '\0';
     printf("수신한 메시지:%s\n", buf); /* 서버로부터 수신한 메시지 출력 */

     closesocket(client);
     WSACleanup();
     return 0;
}


반응형

'엔지니어 > C++' 카테고리의 다른 글

socket_test_server  (0) 2016.05.26
agent server (create by sk)  (0) 2016.05.26
agent server makefile (create by sk)  (0) 2016.05.26
agent client makefile (create by sk)  (0) 2016.05.26
j2-agent(/etc/init.d/) (create by sk)  (0) 2016.05.26