본문 바로가기

TIL (Today I Learned)/C

(3)
[C] Socket close() shutdown() 차이 Socket close() shutdown() 차이 int close(int sockfd); 소켓을 닫고 통신을 종료 sockfd는 닫을 소켓 번호 성공하면 0을 반환 실패하면 1을 반환 닫힌 소켓은 더이상 사용 불가 내부적으로 TCP는 send buffer와 recv buffer가 있다. close를 호출하여 send buffer에 보낼 데이터가 남아 있다면 남아 있는 것을 모두 보낸 후에 TCP 종료 절차를 따른다. socket으로 소켓을 열면 참조 카운터가 1 증가한다. close는 참조 카운터를 1감소 시킨다. 그러다가 참조카운터가 0이 되면 소켓을 닫는다. int shutdown(int sockfd, int howto); 네트워크 연겨을 종료시키는 데 사용 close()와 차이 close는 참조..
[c] c언어 구조체의 메모리 사이즈 c언어 구조체의 메모리 사이즈 1. sizeof 연산자 해당 변수 및 데이터타입의 크기를 정수형태로 되돌려 준다. int a; double b; char c; sizeof(a) // 4 sizeof(b) // 8 sizeof(c) // 1 2. 구조체의 크기 #include typedef struct stu{ char a; int b; }S; void main() { struct stu a; printf("S의 메모리 공간 크기 = %d\n", sizeof(S)); printf("S의 메모리 공간 크기 = %d\n", sizeof(a)); } a는 1바이트 문자형, b는 4바이트 정소형 그렇다면 5바이트??? $ gcc c.c -o c // c.c파일을 gcc로 c source를 컴파일 결과는 8바이트가..
[C] strncmp와 strcnp strncmp와 strcnp 헤더파일 // c언어 // c++ function prototype int strcmp(const char* str1, const char* str2); int strncmp(const char* str1, const char* str2, size_t n); strcmp str1 : 비교할 문자열 1 str2 : 비교할 문자열 2 strncmp str1 : 비교할 문자열 1 str2 : 비교할 문자열 2 n : 비교할 문자열 길이 (size_t는 unsigned int / 0보다는 큰 값이 들어와야한다.) str1이 문자 8개 str2가 문자열 18개로 구성되어 있을 때 n이 10, 100을 넣어도 str1의 8개 문자만 비교한다. strcmp 비교 char str1[] = ..