현재 서버와 클라이언트로 수행하고있는 작업은 바이트 간 간단한 문자열을 사용하여 명령을 전송합니다.TCP 소켓을 통해 명령을 보내는 가장 좋은 방법은 무엇입니까?
byte[] outStream = System.Text.Encoding.UTF8.GetBytes("$msg:Test Message");
serverStream.Write(outStream, 0, outStream.Length);
그리고 잡 끝은 다시 문자열 인코딩 : 그것은 무엇에 내려 오는 것은이 (예를 들어 서버에 메시지를 보낼 수) 기본적으로. 다음을 수행하여 명령을 인식합니다.
recievedstring.Split(':')[0]
recievedstring.Split(':')[1]
을 인수로 가정합니다. 사용자가 메시지에 콜론을 입력하면 해당 메시지가 차단됩니다. 두 종점간에 데이터를 전송하는 해킹 방법이라고 생각합니다. 이 작업을 수행하는보다 표준적인 방법이 있습니까? 죄송합니다. 충분한 정보를 제공하지 못했을 때, 저는이 문제에 익숙하지 않았습니다!
길이 int를 바이트 배열로 변환하는 방법은 무엇입니까? length-byte-array의 길이가 항상 같을까요? 클라이언트는 유형과 데이터를 분리하는 방법을 어떻게 알 수 있습니까? –
당신은'BitConverter.GetBytes (length)'를 사용하여 int를 C#에서 바이트 배열로 변환 할 수 있습니다. 그렇습니다. 길이는 항상 동일합니다. 즉 4 바이트입니다. 형식과 데이터를 구분하기 위해 형식은 int 일 수도 있으므로 항상 길이는 4 바이트입니다. –
그래서 내 패킷 형식은 [typelength : datalength : type : data]가 될 것입니까? 클라이언트는 읽는 바이트 수를 어떻게 알 수 있습니까? 내가 지금 가지고있는 것은 : 'byte [] buffer = new byte [4096]; int 길이 = serverStream.Read (버퍼, 0, buffer.Length); byte [] newbuffer = buffer.Take (length) .ToArray(); 문자열 returndata = Encoding.UTF8.GetString (newbuffer); ' –