소켓에 연결을 수신하고 사용자를 인증 한 다음 인증에 제공된 정보와 일치하는 사용자 클래스에 소켓을 "보냅니다"이 서버를 추가하려고하는데이 서버를 빌드하려고합니다. 처리 (정보 교환, 다른 곳에서의 업데이트 등) 할 스레드 풀 (해당 클라이언트의 여러 장치 중).스레드 간 소켓 전송.?
서버에 24/7 요청을 보내지 않고 각 장치에 대해 가벼운 스레드를 열어두고 실시간으로 통신하기를 원하기 때문에이 방법을 선택했습니다.
이제까지 보았 듯이 Socket.DuplicateAndClose와 같은 일을 할 수 있지만 스레드가 아닌 프로세스에서 작동합니다.
누구든지이 작업을 수행 할 수있는 방법을 알고 있습니까? 그렇지 않으면 다른 방법을 사용해야합니까? 감사합니다.
EDIT : 혼란이 있었고, 다른 클래스의 다른 소켓으로 옮기고, 그 클래스에서 열린 스레드가 처리 할 것이라고 생각했습니다. 인증을 위해 연결을 수락하면 그 소켓은 그 연결을 가지고 있습니다. 그 소켓이 어디서 왔는지 알지 못했기 때문에 특정 클래스의 특정 소켓으로이를 수락 할 수 없었습니다. 내가 그 클래스의 쓰레드에서 그것을 사용한다면, 연결을 받아들이 기 위해 사용하는 다음 소켓이 하나가 될 것이기 때문에이 클래스를이 클래스를 사용하도록 말할 수 없기 때문에 나는 아무것도 할 수 없다. 그것은 같은 수업에 의해 점령되었습니다. 나는 수용된 소켓을 저장하기 위해 거대한 배열을 사용할 수 있었고, 그 소켓 번호가 그들의 소켓 번호라는 것을 클래스에 알릴 수 있었다. 그러나 그것은 제한되지 않았을 것이지만 느슨한 소켓의 묶음뿐만 아니라 작동 할 것이지만 최적화되거나 구성되지는 않을 것이다.
네, 그 말이 이치에 맞고, 제 질문을 올바르게 물어 보지 않으면 너무 유감입니다. 나는 편집 할 것입니다. – TrisT
사실 당신은 질문에 답했고 다른 것에 관해 이야기 할 때 요점을 보지 못했습니다. 나는 그것을 해결 된 것으로 표시하고 올바른 질문으로 하나를 여는 것입니다. – TrisT
@TrisT 타입의'Socket' 필드는 객체에 대한 참조 일뿐입니다. 재 할당 할 수 있으며 동일한 객체에 대한 여러 참조도 좋습니다. (주의 : 필드가'readonly '이 아니라면 타입 정의 문제이고, 참조 대상과는 아무런 관련이 없다.) – Richard