728x90
hello, world๋ฅผ ์ถ๋ ฅํ๋ ์์ผ ํ๋ก๊ทธ๋จ
- ์์ผ ํ๋ก๊ทธ๋จ ๊ตฌ์ฑ
- ์๋น์ค๋ฅผ ์์ฒญํ๋ ํด๋ผ์ด์ธํธ ์ธก
- ํด๋ผ์ด์ธํธ๋ก๋ถํฐ์ ์์ฒญ์ ๋ฐ์ ์๋น์คํ๋ ์๋ฒ ์ธก
- ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ด ๋คํธ์ํฌ์ฌ์ฅ์ ํต์ ์ฑ๋์ ํตํด ์๋ฒ์ธก์ ์ฐ๊ฒฐ๋๋ฉด ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฆ์ ๋ฌธ์์ด hello, world๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์ ์ ์ก
- ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์ ์ก๋ฐ์ ๋ฌธ์์ด์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
- ์ฐ๊ฒฐ์์ฒญ : ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์์ผ API ํจ์๋ฅผ ํธ์ถํ์ฌ ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐ์ ์์ฒญํ๋ค.
- ๋ฌธ์์ด ์ ์ก : ์ฐ๊ฒฐ ์์ฒญ์ ๋ฐ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ๊ณผ ์ฐ๊ฒฐ๋์๋ง์ ๋ฌธ์์ด hello, world๋ฅผ ํด๋ผ์ด์ธํธ์ธก์ ์ ์กํ๋ค.
- ํ๋ฉด ์ถ๋ ฅ : ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ์ ์ก๋ฐ์ ๋ฌธ์์ด (helo, world)๋ฅผ ์์ ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
- hello_server.c
#include<stdio.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/socket.h>
#define PORT 9001
char buffer\[BUFSIZ\] = "hello, wolrd";
int main()
{
int c\_socket, s\_socket;
struct sockaddr\_in s\_addr, c\_addr;
int len;
int n;
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);
n = strlen(buffer);
write(c_socket, buffer, n);
close(c_socket);
}
close(s_socket);
}
hello_client.c
- ์๋ฒ ํ๋ก๊ทธ๋จ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ฅ์น์ธ ์์ผ์ ์์ฑํด์ผ ํ๊ณ , ์ฌ์ ์ ์๋ฒ์ IP์ฃผ์์ ์๋ฒ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ฒฐ๋ ํฌํธ ๋ฒํธ๋ฅผ ์์์ผํ๋ค.
- ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ ์ฝ๋ (socket, connect, read ๋ฑ์ ์์ผ ๊ด๋ จ API ํจ์๋ฅผ ์ฌ์ฉ)
#include<stdio.h>
#include <netinet/in.h>
#include <string.h>
#include <sys/socket.h>
#define PORT 9001
#define IPADDR "127.0.0.1"
main(){
int c_socket;
struct sockaddr_in c_addr;
int len;
int n;
char rcvBuffer[BUFSIZ];
c_socket = socket(PF_INET, SOCK_STREAM, 0); // TCP์ฉ ์์ผ์ ์์ฑ
memset(&c_addr, 0, sizeof(c_addr)); // ์ฐ๊ฒฐํ ์๋ฒ์ ์ฃผ์๋ฅผ ๊ตฌ์กฐ์ฒด ๋ณ์ c_addr์ ์ค์
c_addr.sin_addr.s_addr = inet_addr(IPADDR); // ์ฐ๊ฒฐํ ์๋ฒ์ ์ฃผ์๋ 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");
close(c_socket);
return -1;
}
/* ์๋น์ค ์์ฒญ๊ณผ ์ฒ๋ฆฌ
* ์๋ฒ์ ์ฐ๊ฒฐ๋ ํต์ ์ฑ๋์ ํตํด ์๋ฃ๋ฅผ ์ก์์ ํ๋ฉด์ ์๋น์ค๋ฅผ ์ฒ๋ฆฌํ๋ค.
*/
if((n = read(c_socket, rcvBuffer, sizeof(rcvBuffer))) < 0){
printf("here");
return (-1);
}
rcvBuffer[n] = '\0';
printf("reveived Data : %s\n", rcvBuffer);
close(c_socket);
}
์์ผ์ ์๋ฒ์ ์ฐ๊ฒฐ
- ์๋ฒ์์ ์ฐ๊ฒฐ์ ์ปค๋ ๋ด๋ถ์์ 3๋ฐฉํฅ ํธ๋์ ฐ์ดํน์ ๊ฑฐ์ณ ์ด๋ฃจ์ด์ง๋ค. ์์ ์๋ฒ์์๋ ์๋ฒ ํ๋ก๊ทธ๋จ์์ ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ ์์ฒญ์ ๋ฐ์ ์๋ฒ ๋ด ํฌํธ ๋ฒํธ (9001๋ฒ ํฌํธ)๋ฅผ ๊ฒฐ์
- ํด๋ผ์ด์ธํธ์์๋ ํด๋ผ์ด์ธํธ์ ์ปค๋์์ ์๋ฒ ์ฐ๊ฒฐ์ ์ฌ์ฉํ ํฌํธ(๊ทธ๋ฆผ์์๋ 2345๋ฒ ํฌํธ)๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ ํ๋ก๊ทธ๋จ์์๋ ํฌํธ๋ฒํธ๋ฅผ ํน๋ณํ ์ง์ ํ์ง ์๋๋ค.
์คํ ํ๋ฉด
'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.12 |
LTE Network Element (0) | 2021.07.22 |