/*
============================================================================
Name : SoketServer.c
Author : SeYUN
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#define BUFF_SIZE 1024
int main( void)
{
int server_socket;
int client_socket;
int client_addr_size;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
char buff_rcv[BUFF_SIZE+5];
char buff_snd[BUFF_SIZE+5];
printf("socket 생성 전:\n");
/* return 값은 소켓 식별자 이나 -1은 오류 리턴임 */
server_socket = socket( PF_INET, SOCK_STREAM, 0);
if( -1 == server_socket)
{
printf( "server socket 생성 실패\n");
exit( 1);
}
printf("socket 생성 완료\n");
memset( &server_addr, 0, sizeof( server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons( 4000);
server_addr.sin_addr.s_addr= htonl( INADDR_ANY);
if( -1 == bind( server_socket, (struct sockaddr*)&server_addr, sizeof( server_addr) ) )
{
printf( "bind() 실행 에러\n");
exit( 1);
}
printf("listen 시작\n");
if( -1 == listen(server_socket, 5))
{
printf( "listen() 실행 실패\n");
exit( 1);
}
while( 1)
{
client_addr_size = sizeof( client_addr);
client_socket = accept( server_socket, (struct sockaddr*)&client_addr, &client_addr_size);
if ( -1 == client_socket)
{
printf( "클라이언트 연결 수락 실패\n");
exit( 1);
}
read ( client_socket, buff_rcv, BUFF_SIZE);
printf( "receive: %s\n", buff_rcv);
sprintf( buff_snd, "%d : %s", strlen( buff_rcv), buff_rcv);
write( client_socket, buff_snd, strlen( buff_snd)+1); // +1: NULL까지 포함해서 전송
close( client_socket);
}
printf("프로그램 종료\n");
}


+ Recent posts