728x90
hello, world๋ฅผ ์ถ๋ ฅํ๋ ์์ผ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ ํ์ฅ
- ์ด์ ์ ์์ฑํ hello, world๋ฅผ ์ถ๋ ฅํ๋ ์์ผ ํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ด ์ฐ์ ๋ฌธ์์ด print๋ผ๋ ๋ช
๋ น๊ณผ ๊ฐ์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ฒ ํ๋ก๊ทธ๋จ์ด ์ด ์์ฒญ์ ๋ฐ์์ผ๋ง ๋ฌธ์์ด ์ ์ก์ด ๋๋๋ก ๊ธฐ๋ฅ์ ์ถ๊ฐ
- ์ฐ๊ฒฐ ์์ฒญ : ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐ ์์ฒญ์ ํ๊ณ ์ฐ๊ฒฐํ๋ค.
- print ์์ฒญ : ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์๋ก๋ถํฐ ๋ฌธ์์ด print๋ฅผ ์ ๋ ฅ๋ฐ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ์กํ๋ค.
- ๋ฌธ์์ด ์ ์ก : print ์์ฒญ์ ๋ฐ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฌ์ ์ฝ์๋๋ก ๋ฌธ์์ด hello, wolrd๋ฅผ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ์กํ๋ค.
- ํ๋ฉด ์ถ๋ ฅ : ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์ ์ก๋ฐ์ ๋ฌธ์์ด(hello, world)์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
hello_ext_server.c
#include<stdio.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define PORT 9005
#include<string.h>
char buffer[BUFSIZ] = "HELLO WORLD";
char rBuffer[BUFSIZ];
void printAll(){
printf("All");
}
int main(){
int c_socket, s_socket;
struct sockaddr_in s_addr, c_addr;
int len;
int n;
char *temp;
int length;
s_socket = socket(PF_INET, SOCK_STREAM, 0);
memset(&s_addr, 0, sizeof(s_addr));
s_addr.sin_addr.s_addr = htonl(INADDR_ANY);
s_addr.sin_family = AF_INET;
s_addr.sin_port = htons(PORT);
if(bind(s_socket, (struct sockaddr *) & s_addr, sizeof(s_addr)) == -1){
printf("Can not Bind\n");
return -1;
}
/* ์์ผ์ผ๋ก ํต์ ์ด ์ด๋ฃจ์ด์ง๋๋ก
* ์ด์์ฒด์ (์ปค๋)์ ๊ฐํต์ ์์ฒญํ๋ค.
*/
if(listen(s_socket, 5) == -1){
printf("listen Fail\n");
return -1;
}
/* ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ ์ฐ๊ฒฐ ์์ฒญ์ ๋ฐ์ ์ฒ๋ฆฌ
* ์์ฒญ์ ๋ฌดํํ ๋ฐ๋ณต์ ํตํด ํ์ธ
*/
while(1){
len = sizeof(c_addr);
c_socket = accept(s_socket, (struct sockaddr *) & c_addr, &len);
length = 0;
temp = rBuffer;
while((n = read(c_socket, temp, 1)) > 0 ){
if(*temp == '\r') continue;
if(*temp == '\n') break;
if(*temp == '\0') break; // ๋ฌธ์์ด์ ๋๋ ๋๊น์ง ์ฝ์ด ๋ค์ธ๋ค.
if(length == BUFSIZ) break;
temp++; length++;
}
rBuffer[length] = '\0';
if(!strcmp(rBuffer, "print")) {
n = strlen(buffer);
write(c_socket, buffer, n);
}
close(c_socket);
}
close(s_socket);
}
hello_ext_client.c
#include<stdio.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<strings.h>
#include<string.h>
#define PORT 9005
#define IPADDR "127.0.0.1"
char buffer[BUFSIZ];
int main(){
int c_socket;
struct sockaddr_in c_addr;
int len;
char rcvBuffer[BUFSIZ];
int n;
c_socket = socket(PF_INET, SOCK_STREAM, 0);
memset(&c_addr,0, sizeof(c_addr));
c_addr.sin_addr.s_addr = inet_addr(IPADDR);
c_addr.sin_family = AF_INET;
c_addr.sin_port = htons(PORT);
if(connect(c_socket, (struct sockaddr *) &c_addr, sizeof(c_addr)) == -1){
printf("Can not connect\n");
close(c_socket);
return -1;
}
scanf("%s", buffer);
buffer[strlen(buffer)] = '\0';
write(c_socket, buffer, strlen(buffer)+1);
if((n = read(c_socket, rcvBuffer, sizeof(rcvBuffer))) < 0){
return (-1);
}
rcvBuffer[n] = '\0';
printf("received Data : %s\n", rcvBuffer);
close(c_socket);
}
๊ฒฐ๊ณผํ๋ฉด
'TIL (Today I Learned) > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Network] HTTP2 (0) | 2021.09.09 |
---|---|
[Network] Wireshark (0) | 2021.09.08 |
[Network] tracert ์ฌ์ฉ๋ฒ (0) | 2021.09.08 |
[tcp/ip]hello, world๋ฅผ ์ถ๋ ฅํ๋ ์์ผ ํ๋ก๊ทธ๋จ (0) | 2021.08.07 |
LTE Network Element (0) | 2021.07.22 |