본문 바로가기

리눅스 멀티스레드 파일 공유 프로그램 - 7 본문

개인 프로젝트 공부

리눅스 멀티스레드 파일 공유 프로그램 - 7

Seongjun_You 2024. 6. 11. 15:27

집에서 다른 컴퓨터와 소켓통신을 가능하게 만들어줄 것이다.

이를 통해 개발내용 업데이트 사항을 다른 PC에 쉽게 전달할 수 있는 환경을 만들어주는 게 목표이다.

 

먼저 네트워크 설정을 해주어야 한다.

 

VMware는 Edit에서 수정을 해준다.

Bridged를 통해 가상머신의 IP를 공유기에 다이렉트로 연결해 준다.

즉 host IP와 동일선상의 위치에 서있게 만들어준다.

 

그 후 우분투의 네트워크 설정을 Bridged로 선택해 준다.

클라이언트도 이와 동일하게 해 준다.

.

 

IP가 바뀌었다.

 

 

이제 연결이 잘되는지 확인하기 위해

서버의 코드를 수정해 주었다.

 

while(true)
    {
        struct sockaddr_in client_addr;
        int client_addrlen = sizeof(client_addr);
        if ((new_socket = accept(server_fd, (struct sockaddr *)&client_addr, (socklen_t*)&client_addrlen)) < 0) {
            std::cerr << "Accept failed" << std::endl;
            return -1;
        }
        cout << "Client IP : " << inToip(client_addr.sin_addr.s_addr) << endl;
        pthread_t thread;
        int result = pthread_create(&thread, NULL, clientHandler, &new_socket);
        pthread_detach(thread);
    }

 

#include <arpa/inet.h>

string inToip(uint32_t ip){
    struct in_addr ip_addr;
    ip_addr.s_addr = ip;
    return string(inet_ntoa(ip_addr));
}

연결되는 Client IP를 확인하기 위해 정수로 되어있는 ip를 보기 좋게 바꾸어 준다.

 

 

또한 클라이언트에서 서버에 연결할 IP도 "192.168.219.101"로 바꾸어주었다.

 

 

동일한 로컬 네트워크에서 접속이 되는 것을 확인할 수 있었다.

 

 

외부에서 접근하기 위해서는 공유기 포트포워딩 설정을 해주어야 한다.

아직은 쓸 필요가 없어 나중에 진행하기로 했다.

Comments