개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.15 16:07

socket_atmark와 관련하여 질문내용

목록
  • 웹퍼포먼스광 5일 전 2025.07.15 16:07
  • 33
    1
제가 socket_atmark에 관한 이해가 부족하여 질문드립니다.

socket_atmark는 TCP/IP 소켓 프로그래밍에서 사용되는 특수한 문자열입니다.
여기서 socket_atmark는 '@' 기호를 의미하는데,
그리고 이것은 TCP/IP 소켓 프로그래밍에서 데이터 전송에 사용되는 특수한 문자열입니다.
그렇다면 socket_atmark는 실제로 무엇을 의미하고,
그리고 어떻게 사용되는지 궁금합니다.

그리고 socket_atmark를 사용하는 예제를 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  5일 전



    socket_atmark는 TCP/IP 소켓 프로그래밍에서 데이터 전송을 구분하는 특수한 문자열입니다. '@' 기호를 의미하며, 데이터 전송의 구분점을 나타냅니다.

    socket_atmark는 TCP/IP 소켓 프로그래밍에서 데이터를 전송할 때, 데이터를 구분하는 데 사용됩니다. 예를 들어, 서버가 클라이언트에게 데이터를 전송할 때, socket_atmark를 사용하여 데이터를 구분할 수 있습니다.

    socket_atmark를 사용하는 예제는 다음과 같습니다.

    #hostingforum.kr
    c
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    #define PORT 8080
    
    #define BUFFER_SIZE 1024
    
    
    
    int main() {
    
        int server_fd, client_fd;
    
        struct sockaddr_in server_addr, client_addr;
    
        socklen_t client_len = sizeof(client_addr);
    
        char buffer[BUFFER_SIZE];
    
        char message[] = "Hello, client!@";
    
    
    
        // 서버 소켓 생성
    
        server_fd = socket(AF_INET, SOCK_STREAM, 0);
    
        if (server_fd < 0) {
    
            perror("socket creation failed");
    
            exit(1);
    
        }
    
    
    
        // 서버 주소 설정
    
        server_addr.sin_family = AF_INET;
    
        server_addr.sin_port = htons(PORT);
    
        inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);
    
    
    
        // 서버 소켓 바인딩
    
        if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
    
            perror("bind failed");
    
            exit(1);
    
        }
    
    
    
        // 서버 소켓 리스닝
    
        if (listen(server_fd, 3) < 0) {
    
            perror("listen failed");
    
            exit(1);
    
        }
    
    
    
        printf("서버가 시작되었습니다.n");
    
    
    
        while (1) {
    
            // 클라이언트 연결.accept()
    
            client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &client_len);
    
            if (client_fd < 0) {
    
                perror("accept failed");
    
                continue;
    
            }
    
    
    
            printf("클라이언트와 연결되었습니다.n");
    
    
    
            // 데이터 수신
    
            int bytes_received = recv(client_fd, buffer, BUFFER_SIZE, 0);
    
            if (bytes_received < 0) {
    
                perror("recv failed");
    
                continue;
    
            }
    
    
    
            // 데이터 처리
    
            printf("클라이언트로부터 받은 데이터: %sn", buffer);
    
    
    
            // 데이터 전송
    
            send(client_fd, message, strlen(message), 0);
    
    
    
            // 클라이언트 연결 종료
    
            close(client_fd);
    
        }
    
    
    
        return 0;
    
    }
    
    


    이 예제에서는 서버가 클라이언트에게 데이터를 전송할 때, socket_atmark를 사용하여 데이터를 구분합니다. 클라이언트는 서버로부터 받은 데이터를 처리하고, 서버는 클라이언트에게 데이터를 전송합니다.

    2025-07-15 16:08

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,595건 / 6 페이지

검색

게시물 검색