C언어 Newwork Study 5
·
C/Study
🌟 다중 접속 로그인 구현더보기//client #include #include #include #include #include #include #define BUF_SIZE 1024char global_pw[50] = "passw123";char global_id[50] = "user1";pthread_mutex_t input_mutex = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t output_mutex = PTHREAD_MUTEX_INITIALIZER;// 상태 관리용 enumtypedef enum { STATE_WAIT_LOGIN, STATE_LOGGED_IN} ClientState;ClientState client_state = STATE_WAIT_LO..
C언어 Newwork Study 4
·
C/Study
🌟 로그인 구현 >> 로그인 후 >> ID 변경, PW 변경 구현더보기+ ID, PW 정보는 member 같은 구조체 자료형으로 구현 클라이언트에서 입력받은 ID, PW 를 서버로 전송서버에서 전달받은 ID, PW 체크 후 결과 클라이언트로 전송클라이언트에서 전달받은 결과에 따라 처리하는 로직 구현 // client#include // 표준 입출력 함수 (printf, scanf 등)#include // 일반 유틸리티 함수 (exit, atoi 등)#include // 문자열 처리 함수 (strcpy, strcmp, memset 등)#include // 유닉스 시스템 함수 (read, write, close 등)#include // 인터넷 주소 관련 함수 및..
C언어 Newwork Study 3
·
C/Study
🌟 4-3 에코 클라이언트의 문제점더보기// echo_server.cwhile((str_len = read(clnt_sock, message, BUF_SIZE)) != 0) write(clnt_sock, message, str_len);// 서버는 클라이언트로부터 데이터를 여러 번에 걸쳐 수신할 수 있다고 생각하고 read()를 반복 호출함.// 수신한 만큼만 write()로 다시 전송함.// ehco_clientwrite(sock, message, strlen(message));str_len = read(sock, message, BUF_SIZE-1);// 클라이언트는 문자열을 한 번에 전송함// read()도 한 번만 호출해서 모든 데이터가 한 번에 수신되기를 기대함 해결책 1: read()..
C언어 Newwork Study 2
·
C/Study
🌟 TCP/IP 소켓 프로그래밍 예제 분석_p21. hello_serve r.c 더보기#include // 표준 입출력 함수 사용 (예: printf, fputs)#include // 표준 라이브러리 함수 (예: atoi, exit 등 사용)#include // 문자열 처리 함수들 (예: memset 사용)#include // 유닉스 계열 시스템 함수 (예: read, write, close)#include // IP 주소 변환 등 네트워크 함수 (예: htons, htonl 등)#include // 소켓 관련 함수 (예: socket(), bind(), listen(), accept() 등)void error_handling(char *message);// 오류 발생 시 메시지 출력 후 프로그램 종..
C언어 Newwork Study 1
·
C/Study
🌟 구조체더보기정의서로 다른 데이터 타입을 하나로 묶어서 관리할 수 있는 사용자 정의 데이터 타입특징여러 변수를 논리적으로 그룹화메모리 효율적인 데이터 관리복잡한 데이터 구조 표현 가능 🌟 구조체 포인터더보기개념구조체 변수의 주소를 저장하는 포인터활용법 함수에서 구조체 포인터 매개변수로 전달받아 효율적인 메모리 사용동적 메모리 할당과 연계하여 유연한 데이터 구조 구현접근 방법(*포인터명).멤버명 또는 포인터명->멤버명 🌟 파일 입출력더보기기본 개념프로그램과 외부 파일 간의 데이터 교환주요 함수들 fopen(): 파일 열기fclose(): 파일 닫기fprintf(), fscanf(): 형식화된 파일 입출력fread(), fwrite(): 바이너리 파일 입출력 🌟 분활 컴파일더보기목적큰..