본문 바로가기
CS/네트워크

네트워크 기본(VMware 리눅스와 호스트 윈도우 서버와 클라이언트)

by Wanado 2023. 1. 4.
728x90

ping test

 

telnet 네트워크 연결여부 테스트

http://dveamer.github.io/backend/NetworkCheck.html

 

Dveamer

현실에서 살고 있지만 이상에 대한 꿈을 버리지 못한 몽상가의 홈페이지 입니다. 개인적인 기록을 주 목적으로 하며 일상과 프로그래밍 관련 글을 포스팅합니다.

dveamer.github.io

포트포워딩

https://storytown.tistory.com/14

 

****

VMware는 가상의 컴퓨터를 만들어주는 프로그램이다

그래서 내 로컬컴퓨터와 가상의 컴퓨터를 연결하기 위해서는 그 사이의 VMware 호스트의 Virtual Network Editor의 NAT설정을 통해 포트포워딩을 해주어야 한다.

 

내 노트북 IP확인  ipconfig  

 

> VM ware 포트포워딩

https://klero.tistory.com/entry/Vmware-Workstation-%ED%8F%AC%ED%8A%B8-%ED%8F%AC%EC%9B%8C%EB%94%A9-%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

 

#Host-only, NAT, Bridged 차이

https://developerin.tistory.com/18

 

 

리눅스 IP 확인 ifconfig

 

----------------------

그리고 방화벽을 설정하여 특정 포트를 열어준다.

리눅스 방화벽 관리

https://server-engineer.tistory.com/840

리눅스 방화벽 열고 닫기

https://pinggoopark.tistory.com/158

 

윈도우 방화벽 열고닫기

https://healthydoctor.tistory.com/174

 

 

================================

리눅스(서버역할)    server_echo.py

import socket


# 접속할 서버 주소(리눅스)입니다. 여기에서는 루프백(loopback) 인터페이스 주소 즉 localhost를 사용합니다. 
HOST = '192.168.1.111'
# 클라이언트 접속을 대기하는 포트 번호입니다.   
PORT = 9999        


# 소켓 객체를 생성합니다. 
# 주소 체계(address family)로 IPv4, 소켓 타입으로 TCP 사용합니다.  
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


# 포트 사용중이라 연결할 수 없다는 
# WinError 10048 에러 해결를 위해 필요합니다. 
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)


# bind 함수는 소켓을 특정 네트워크 인터페이스와 포트 번호에 연결하는데 사용됩니다.
# HOST는 hostname, ip address, 빈 문자열 ""이 될 수 있습니다.
# 빈 문자열이면 모든 네트워크 인터페이스로부터의 접속을 허용합니다. 
# PORT는 1-65535 사이의 숫자를 사용할 수 있습니다.  
server_socket.bind((HOST, PORT))

# 서버가 클라이언트의 접속을 허용하도록 합니다. 
server_socket.listen()

# accept 함수에서 대기하다가 클라이언트가 접속하면 새로운 소켓을 리턴합니다. 
client_socket, addr = server_socket.accept()

# 접속한 클라이언트의 주소입니다.
print('Connected by', addr)



# 무한루프를 돌면서 
while True:

    # 클라이언트가 보낸 메시지를 수신하기 위해 대기합니다. 
    data = client_socket.recv(1024)

    # 빈 문자열을 수신하면 루프를 중지합니다. 
    if not data:
        break


    # 수신받은 문자열을 출력합니다.
    print('Received from', addr, data.decode())

    # 받은 문자열을 다시 클라이언트로 전송해줍니다.(에코) 
    client_socket.sendall(data)


# 소켓을 닫습니다.
client_socket.close()
server_socket.close()

---------------------------------------------

윈도우(클라이언트 역할)  client.py

import socket


def client_program():
    host = '192.168.1.111'  # as both code is running on same pc
    port = 9999  # socket server port number

    client_socket = socket.socket()  # instantiate
    client_socket.connect((host, port))  # connect to the server

    message = input(" -> ")  # take input

    while message.lower().strip() != 'bye':
        client_socket.send(message.encode())  # send message
        data = client_socket.recv(1024).decode()  # receive response

        print('Received from server: ' + data)  # show in terminal

        message = input(" -> ")  # again take input

    client_socket.close()  # close the connection


if __name__ == '__main__':
    client_program()
728x90