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 |