여러 클라이언트가 한 서버와 동시에 통신 할 수있는 클라이언트 서버 시스템을 개발해야합니다. xml 직렬화 된 객체를 전달하고 메소드를 호출하기 위해 다른 명령을 보내고 받아야합니다. 자, C#과 .Net에서 소켓 프로그래밍을 시작하면서 비동기 입출력이 코드의 실행을 차단하지 않도록하는 방법임을 알게되었습니다. 또한 방법의 많은 예가 있습니다여러 클라이언트 - 하나의 서버와 소켓 연결 tcp/ip C# .net
간단한 클라이언트 서버 시스템을 만드십시오. 그래서 저는 그것이 어떻게 작동하는지에 대한 기본적인 이해를 가지고 있습니다.
어쨌든, 나에게 아직 불명확 한 점은 여러 클라이언트에 대한 연결을 관리 할 수있는 서버를 설정하는 방법입니다. 연결 당 새 소켓을 만든 다음이를 일종의 목록에 저장할 수 있습니까? 이를 달성하기 위해 일종의 멀티플렉싱이 필요합니까? 여러 포트에서 수신 대기해야합니까? 여기서 가장 좋은 방법은 무엇입니까?
그리고 다른 점은 네트워크를 통해 실제로 무엇을 보내고 있는지를 구분하기 위해 자체 프로토콜을 개발해야하는 경우입니다.> xml 직렬화 된 개체 또는 ascII 등으로 인코딩 된 문자열 일 수있는 명령입니다. 아니면이 명령을 보내기 위해 자체 프로토콜을 개발할 것인가?
모든 종류의 도움을받을 수 있습니다. 누군가이 물건을 다루는 좋은 책을 알고 있다면 알려주세요. 건배
나는 얘기를 깜빡 했네요 그 PDA 될 것입니다 내 서버와 통신하는데 내가 때문에 컴팩트 프레임 워크를 사용 ... 그래서이 일부 제한에 가져올 수 있습니다 내 고객 ... 일부
위의 링크 u를 읽으십시오. 정말 유용했습니다. 내가 얻지 못한 것은 당신이 지방 항구에서 무엇을 의미합니까? 어떤 IP 주소에 대해서도 8221 번 포트에서 듣고 있습니다. 로컬 포트로 들어오는 연결을 처리하는 새 소켓을 어떻게 만들 수 있습니까? 클라이언트가 포트를 변경해야합니까, 아니면 어떻게 작동합니까? 감사합니다. – jagse
사용되지 않는 로컬 포트에 바인드 된 새로운 소켓 생성과 클라이언트의 새로운 소켓으로의 마이그레이션은 모두 TCP/IP 스택에 의해 처리됩니다. 따라서 서버 코드에 관한 한 8221에서 계속 청취 할 수 있습니다. 클라이언트 코드에 관해서는 8221에 성공적으로 연결되어 있습니다 (실제로 서버의 TCP/IP 스택에 의해 선택된 동적 포트와 통신하지만). –
내가 듣지 못하는 것은 내가 듣고있는 '서버 소켓'이 어떻게 새로 생성 된 소켓에 대한 연결을 전달할 수 있는지입니다. 소켓을 가지고 다음과 같이 BeginAccept를 호출하는 것이 좋습니다. socket.BeginAccept (new AsyncCallback (OnClientConnect), null); 내 OnClientConnect 콜백에서이 연결을 새 소켓에 전달하는 방법은 무엇입니까? – jagse