Net.Sockets.Socket 클래스를 사용하여 TCP 서버를 작성합니다. TCP는 스트림에서 작동하기 때문에 서로 메시지를 분리하는 방법이 필요합니다. (자세한 내용은 그의 블로그 here에있는 Stephen Cleary의 메시지 프레이밍 게시판을 참조하십시오.)TCP 서버/클라이언트에 대한 사용자 지정 메시지 프레이밍 프로토콜
사용자 삽입 메시지 프레이밍 프로토콜을 지원하는 TCP 서버 클래스를 작성하고 싶습니다. 이 클래스의 예 초기화가 여기에 있습니다 :
var receiveDelimiter = Encoding.UTF8.GetBytes("[END]");
var sendDelimiter = Encoding.UTF8.GetBytes("\r\n");
var protocol = new DelimiterFramingProtocol(receiveDelimiter, sendDelimiter);
var server = new Server(protocol);
server.Start(port);
프로토콜
는 추상 클래스 MessageFramingProtocol에서 파생되어야하며, 서버는 메시지를 분리해서 그것을 사용할 수 있어야합니다. 위의 예에서 서버는 구분 기호 ("[END]")가 수신되고 DataReceived 인수가 구분 기호 앞에있는 메시지 부분 만 가져야하는 경우 해당 DataReceived 이벤트를 발생시켜야합니다. 구분 기호 다음에 수신 된 바이트가 더 많은 경우 서버는이를 저장하고 구분 기호가 다시 수신 될 때만 DataReceived를 시작해야합니다. 서버는 sendDelimiter를 전송할 때마다 sendDelimiter를 전송해야합니다.내가 필요한 것은이 전체 서버 클래스 나 프로토콜 클래스가 아닙니다. 내가 필요로하는 것은 템플릿, 디자인 조언이다. 서버 클래스에 Protocol이라는 FramingProtocol 유형의 속성이 있다고 가정하면 Server 클래스에서 작업을 받고 보내는 데 어떻게 사용할 수 있습니까? 위에서 볼 수있는 유연성을 제공하기 위해 어떤 추상 메소드/속성이 있어야합니까? FramingProtocol에서 파생 된 사용자 지정 프로토콜 클래스를 작성할 수 있어야합니다. 구분 기호, 길이 접두어, 둘 다를 사용하거나 별도의 메시지에 대한 사용자 지정 방식을 사용할 수 있습니다.