1. Client Program 

- 소켓 생성 및 서버의 ip주소/ 포트번호 인식 필수 

- socket(), connect(), read() 등의 소켓 관련 API함수 사용.


2. Client 순서 

- 소켓을 생성 

- 연결할 서버의 주소를 설정

- 소켓을 서버에 연결

- 서비스 요청과 처리

- 소켓 연결을 종료 



3. 소스 코드


#include <stdio.h>

#include <netinet/in.h>

#include <sys/socket.h>

#include <ctype.h> // memset(), strlen() 함수 사용을 위한 헤더 

#include <string.h> 


#define PORT 9000

#define IPADDR "127.0.0.1"


int main()

{

  int c_socket;

  struct sockaddr_in c_addr;

  int len;

  int n;


  char rcvBuffer[BUFSIZ];  // 서버로부터 오는 문자열을 저장할 버퍼 


  c_socket=socket(PF_INET, SOCK_STREAM, 0);  // 소켓 생성


  memset(&c_addr, 0, sizeof(c_addr));  // c_addr구조체 선언 

  c_addr.sin_addr.s_addr=inet_addr(IPADDR);  // IPADDR은 위에 define으로 선언했듯이 자기자신인 127.0.0.1

  c_addr.sin_family=AF_INET;  

  c_addr.sin_port=htons(PORT); // 포트번호는 9000번 


  if(connect(c_socket, (struct sockaddr *) &c_addr, sizeof(c_addr))== -1){  // 소켓을 서버에 연결하기. 

    printf("Can not connect \n");

    return -1;

  }


  if((n=read(c_socket, rcvBuffer, sizeof (rcvBuffer)))>0){  // 서비스 요청과 처리 (서버로 부터 오는 문자열을 읽어서 rcvBuffer에 넣음)

    return -1;

  }


  rcvBuffer[n]='\0';  // 문자열의 끝을 나타내는 널값 입력 

  printf("received Data: %s\n", rcvBuffer);  // 서버로 부터 온 문자열을 클라이언트 화면에 출력


  close(c_socket);  // 소켓 종료 

  }

'웹소켓' 카테고리의 다른 글

hello_server.c  (0) 2018.10.31
소켓 프로그래밍 맛보기  (0) 2018.10.31

+ Recent posts