Created
February 13, 2017 11:36
-
-
Save makerj/b6bf6ea91a8d8caa0ea732dc485199a9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "stdio.h" | |
#include "stdlib.h" | |
#include "string.h" | |
#include "time.h" | |
#include "sys/types.h" | |
#include "sys/socket.h" | |
#include "netinet/in.h" | |
#define BUF_LEN 8192 | |
char* response = "[{\"type\":2,\"name\":\"Integer Argument\",\"size\":4,\"mask\":-1,\"value\":12345}," | |
"{\"type\":1,\"name\":\"String Argument\",\"size\":11,\"mask\":-1,\"value\":\"Hello World\"}," | |
"{\"type\":3,\"name\":\"Buffer Argument\",\"size\":5,\"mask\":-1,\"value\":\"48454c4c4f\"}," | |
"{\"type\":4,\"name\":\"Float Argument\",\"size\":4,\"mask\":-1,\"value\":1.234500}]"; | |
int main(int argc, char *argv[]) | |
{ | |
char buffer[BUF_LEN]; | |
struct sockaddr_in server_addr, client_addr; | |
char temp[20]; | |
int server_fd, client_fd; | |
int len, msg_size; | |
if((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) | |
{// 소켓 생성 | |
printf("Server : Can't open stream socket\n"); | |
exit(0); | |
} | |
memset(&server_addr, 0x00, sizeof(server_addr)); | |
//server_Addr 을 NULL로 초기화 | |
server_addr.sin_family = AF_INET; | |
server_addr.sin_addr.s_addr = htonl(INADDR_ANY); | |
server_addr.sin_port = htons(55555); | |
//server_addr 셋팅 | |
if(bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) <0) | |
{//bind() 호출 | |
printf("Server : Can't bind local address.\n"); | |
exit(0); | |
} | |
if(listen(server_fd, 5) < 0) | |
{//소켓을 수동 대기모드로 설정 | |
printf("Server : Can't listening connect.\n"); | |
exit(0); | |
} | |
memset(buffer, 0x00, sizeof(buffer)); | |
printf("Server : wating connection request on port 55555\n"); | |
puts("Hard-Coded Response"); | |
printf("%s\n", response); | |
len = sizeof(client_addr); | |
while(1) | |
{ | |
client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &len); | |
if(client_fd < 0) | |
{ | |
printf("Server: accept failed.\n"); | |
exit(0); | |
} | |
inet_ntop(AF_INET, &client_addr.sin_addr.s_addr, temp, sizeof(temp)); | |
printf("Server : %s client connected.\n", temp); | |
msg_size = read(client_fd, buffer, BUF_LEN); | |
write(client_fd, response, strlen(response)); | |
close(client_fd); | |
printf("Server : %s client closed.\n", temp); | |
} | |
close(server_fd); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment