C++ 소켓 통신 중인데 ...

토스님@Google의 이미지

Server 가 Client 에게 send() 함수로 어떤 문자열을 보내고
Client 는 if() 를 사용하여 받은 문자열이 Hello 와 같은지 확인하고
Hello 와 같다면 특정 코드를 실행하고 싶은데 방법이 없을까요?

계속 찾아봐도 이해를 못하겠네요 ...

익명 사용자의 이미지

1. 뭘 찾아봤나요?

2. 뭐가 이해가 안되나요?

non-trivial한 토픽에 대해서 이렇게 밑도 끝도 없이 와일드카드 식으로 질문을 던지면,
"좋은 강좌 찾아서 천천히 따라해보세요" 정도의 답변만 달리게 된답니다.

하지만 오늘은 즐거운 주말이니 평소보다 조금 더 관대해질 수도 있을 것 같네요.
코드입니다.

SERVER_ADDR = ("localhost", 10000)
 
def server():
    from socketserver import TCPServer, BaseRequestHandler
 
    class HelloServer(BaseRequestHandler):
        def handle(self):
            self.request.send("Hello".encode('utf-8'))
 
    try:
        with TCPServer(SERVER_ADDR, HelloServer) as server:
            server.serve_forever()
    except:
        pass
 
def client():
    from socket import create_connection
 
    s = create_connection(SERVER_ADDR)
    if s.recv(10).decode('utf-8') == "Hello":
        print("I am connected to a HelloServer!")
 
def main():
    from sys import argv
 
    if "server" in argv:
        server()
    else:
        client()
 
if __name__ == '__main__':
    main()

모든 에러 케이스를 다 잘 처리한다고 말할 수는 없을 거에요. 문자 그대로 common case에서만 잘 동작하는 코드입니다.

하지만 소켓 프로그래밍의 꽃이 바로 에러 케이스를 처리하는 거라서요. 그 부분은 연습문제로 남기겠습니다.