2009-03-10 4 views
1

저는 vb.net에서 간단한 udp lan 채팅 응용 프로그램을 만들고 있는데, 어떻게 패킷을 분할해야하는지 궁금합니다. 보낸 패킷마다 ID, 사용자 이름 및 IP 주소가 있어야하며, 내 사용자 목록과 텍스트 메시지를 업데이트하기 위해 같은 조인 또는 종료 명령 부분이 있어야합니다. 이 모든 것을 간단한 패킷에 넣은 다음, 다른 부분을 쉽게 분리하여 액세스하는 가장 쉬운 방법은 무엇인지 알고 싶습니다. 감사. 이것은 단지 LAN에 있기 때문에 내가 UDP를 사용하고분할 할 수있는 UDP 패킷을 만듭니다.

그래서 내가 *.*.*.255

편집에 방송이야 : 당신의 대답 존 주셔서 감사하지만 나는 이미 모든 것을 알고있다. 내가 알고 싶은 것은 사용자 이름, ID, 명령 및 문자 메시지를 포함하도록 패킷을 형식화하는 가장 쉽고 강력한 방법은 무엇인지 알고 싶으면 수신 한 사용자가 암호를 해독하여 작성한 메시지 만 표시하도록하는 것입니다. 사용자 또는 조인 또는 탈퇴와 같은 명령 인 경우 조인에 대한 적절한 메시지를 표시하고 예를 들어 목록에 사용자를 추가하십시오.

+0

어떤 형식으로 서식을 지정했는지 혼란 스럽습니다. "긴"메시지에 어떻게 대처할 수 있습니까? 그렇다면 일련의 순차적 패킷 ID가 필요합니다. 즉 손실 된 패킷 등을 처리하기 위해 TCP/IP와 같은 것을 구현하는 것을 의미합니다. 그렇지 않은 경우 명확히하십시오. –

답변

0

아마도 XML 형식으로 패킷을 포맷 한 다음 수신 측에서 linq를 xml로 구분하여 사용하면됩니다. 형식에 JSON을 사용할 수도 있지만 구문 분석하기가 다소 어려울 수 있습니다.

2

인스턴스 ToByteArray 메서드와 정적 FromByteArray() 메서드 (바이트 배열로 직렬화하고 바이트 배열에서 각각 구문 분석)를 사용하여 적절한 클래스를 만듭니다. 그런 다음 UdpClient.Send()을 보내고 수신하려면 UdpClient.Receive()을 사용하십시오.

당신은 ToByteArrayFromByteArray 방법에 도움이 BinaryReader/ BinaryWriter 및/또는 BitConverter을 사용할 수 있습니다

. 빠른 메모리 내 스트림으로 MemoryStream을 사용하면 BinaryReader/BinaryWriter으로 전달할 수 있습니다.

+0

C#의 char * equivelent에 흥미롭게도 4 ~ 5 가지 방법을 추가로 생성해야합니다. –

+0

@Zenikoder : 메모리를 덤프하는 "직렬화"에 대해 말하는 경우 휴대용 방식으로 올바르게 가져 오는 것은 소리를내는 것보다 어렵습니다. –

관련 문제