-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
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
남박사
지식공유자2020.04.20
전체 코드를 보지 않아 명확히 답을 드리기는 어렵습니다만 오류의 맨 마지막 내용을 보았을때 sock.send(msg.encode()) 에서 소켓 이외의 개체에 작업을 시도한것으로 보아 sock 변수의 소켓 값이 제대로 저장되지 않는 변수에 send 를 시도한걸로 보입니다.
접속 발생시 유저의 nickname 과 매칭하는 request 값과 address 의 튜플형태의 데이터를 제대로 저장했는지 그리고 해당 nickname 을 통해 sock(request) 가 옳바른지부터 확인해봐야 할듯 합니다.
답변 1