• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

socketServer를 이용하여 챗팅 server, client 구현 편에 질문이 있습니다.

20.04.20 15:55 작성 조회수 2.74k

1

안녕하세요. 강의 잘 듣고 있습니다.

socketServer를 이용하여 챗팅 server, client 구현 하기 편에서 client멀티 접속시 에러가 납니다.

```

python .\chat_server.py     

('127.0.0.1', 50094)

현재 1 명 참여중

('127.0.0.1', 50100)

현재 2 명 참여중

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

Exception happened during processing of request from ('127.0.0.1', 50100)

Traceback (most recent call last):  

  File "C:\Python36\lib\socketserver.py", line 654, in process_request_thread

    self.finish_request(request, client_address)      

  File "C:\Python36\lib\socketserver.py", line 364, in finish_request   

    self.RequestHandlerClass(request, client_address, 

self)

  File "C:\Python36\lib\socketserver.py", line 724, in __init__

    self.handle() 

  File ".\chat_server.py", line 25, in handle

    self.send_all_message("[{}] 님이  입장 했습니다.".format(nickname))  

  File ".\chat_server.py", line 9, in send_all_message

    sock.send(msg.encode())

OSError: [WinError 10038] 소켓 이외 의 개체에 작업을  시도했습니다

```

원인이 무엇일까요?

답변 1

답변을 작성해보세요.

1

전체 코드를 보지 않아 명확히 답을 드리기는 어렵습니다만 오류의 맨 마지막 내용을 보았을때 sock.send(msg.encode()) 에서 소켓 이외의 개체에 작업을 시도한것으로 보아 sock 변수의 소켓 값이 제대로 저장되지 않는 변수에 send 를 시도한걸로 보입니다.

접속 발생시 유저의 nickname 과 매칭하는 request 값과 address 의 튜플형태의 데이터를 제대로 저장했는지 그리고 해당 nickname 을 통해 sock(request) 가 옳바른지부터 확인해봐야 할듯 합니다.