이것은 네트워크 프로그래밍 친구들에게는 매우 간단하지만이 점에 대해서는 약간 혼란 스럽습니다. 사용 예를 들어 질문 해 봅시다.초기 소켓 연결이 이루어진 후 TcpListener와 TcpClient 간의 통신을 구성하는 방법
나는 클라이언트가 사용자 이름으로 가입 할 수있는 채팅 서버를 만들려고했다. 계정이나 암호가 없습니다. 그냥 사용자 이름.
모든 것이 좋기 때문에 비동기 호출을 사용하는 작동중인 Echo Server 예제가 실행 중입니다. 이제 클라이언트와 서버 간의 메시지 처리를 정의해야합니다.
클라이언트가 이제 연결하고 연결된 사용자 목록을 가져 오려고합니다. 그 일을 어떻게 하죠?
제 생각에는 BeginGetConnectedUsers라는 함수를 만들고 서버에 메시지를 보냅니다. 서버는 사용자 목록으로 회신하지만 비동기 호출을 사용하기 때문에 Accept 코드를 통해 메시지를보고 BeginGetConnectedUsers의 회신임을 알게되어 데이터를 EndGetConnectedUsers로 보낼 것입니다 .
그러나 이것이 이런 식으로하는 좋은 방법인지는 잘 모르겠습니까? 그러나이 디자인으로 모든 BeginGet 함수를 EndGet 함수와 쌍을 이루어야합니다. 이것은 async await 스타일로 좀 더 읽기 쉽게 만들 수 있지만, 그렇다고해도 좋지 않을 수도 있습니다.
나는 더 그들은 모두 흥미로운 데이터 물건을 교환하기 시작해야 할 때 클라이언트와 서버 사이에 다음 통신을 구성하는 방법에 대한 경험 ...그리고 조언을하지? 볼 곳? TCPLISTENER 작업을 포함하는 내 모든 Google 검색에서 에코 서버의 예를 보여 주며 이미 수행 방법을 알고 있습니다.
서버가 주를 가지고 (당신은 그냥 무효 있도록 응답을 해달라고 할 수 있음) 청취 소켓. 새 연결이 만들어 질 때마다 비동기 수락 메서드에 새 소켓이 전달됩니다. 그래서 보통 각 소켓에 소켓에 새 소켓을 추가하여 각 클라이언트로 보낼 수있는 방법을 가지고 있습니다. Event는 Socket이 포함 된 StateObject 클래스를 만드는 것이 더 좋기 때문에 각 연결에 대해 이름이나 ID와 같은 다른 속성을 추가 할 수 있습니다. –
jdweng
도움이 될만한 응용 프로그램 계층이있는 복잡한 서버를 만들었습니다. 게시 참조 : https://stackoverflow.com/questions/44471975/gps-socket-communication-concox – jdweng
아직 귀하의 링크를 방문한 적이 없지만 수신 서버가 연결을 수락하고 연결이 완료된 후 어떻게되는지 관심이 있습니다. 설립. 이미 여러 클라이언트에서 문자열을 앞뒤로 보냅니다. 다음 메시지 관리를 구성하는 방법에 대한 방법을 찾고 있습니다. 서버와 클라이언트간에 개체와 데이터를 잘 전달하는 방법. 그리고 모든 비동기를 수행하는 방법. – Holm76