2013-09-29 2 views
0

VB.NET에서 패킷을 만들고 읽는 방법은 무엇입니까? 일종의 개체를 보내는 응용 프로그램을 만든 다음 클라이언트가 해당 개체의 직렬화를 해제하고 클라이언트가 정보를 보내고 서버가 apt 개체로 응답하는 양방향 통신을 설정하려고합니다 그것을 위해.VB.NET에서 패킷 구조를 만들고 읽는 방법은 무엇입니까?

답변

1

ProtoBuf-Net을 확인하십시오. 빠르고, 작고, 견고하고, 다소 쉽고 (희소 한 문서) 무료입니다. 많은 정보가, 여기가 at this link입니다. 10 줄 미만의 코드 (일부 클래스/속성 특성 포함)에서 파일이나 mem 스트림으로 어떤 것을 직렬화하고 NET 바이너리 시리얼 라이저보다 훨씬 작은 것을 출력합니다.

이 경우
Try 
     Dim fs As New FileStream(mUserFile, FileMode.Create, FileAccess.Write) 

     Serializer.Serialize(fs, _Profiles) 

     fs.Close() 
     fs.Dispose() 
    Catch ex As Exception 
     MessageBox.Show("PBN Error", MsgTitle, MessageBoxButtons.OK, _ 
       MessageBoxIcon.Exclamation) 
    End Try 

, 5 개 또는 6 ListOf 항목의 컬렉션 (즉 중첩) 연재되었다, 그러나 그것은 쉽게 클래스되고 단지 수 : 기본 코드는 간단하다. 로딩/역 직렬화는 아주 쉽습니다.

내가 본 적이없는 방법이있을 수도 있지만, 설명하는 것과 같은 것을 시도 할 때 NET 바이너리 serializer는 생성 한 동일한 어셈블리 클래스 문화 유형으로 deserialize합니다. 이것은 프로젝트에 대한 독점적 인 출력을 만드는 데 적합하며 데이터 교환에 매우 좋지 않습니다. 출력도 거대했습니다 (NET에서 빈 사전을 3000 바이트로 직렬화하고 PBN은 300을 필요로 함). NET serializer가 좀 더 적합한 유일한 곳은 어셈블리가 난독 화 된 경우입니다. MS는 데이터를 가져 오는 방법을 알고 나머지 클래스와는 공유하지 않습니다. 그때조차도 프로세스에 몇 가지 단계 만 추가합니다.

PBN은 List Of, Dictionary 등의 모든 컬렉션 작업을 처리하지만 기본적으로 직사각형, 포인트 및 크기와 같은 작업을 수행하지 않습니다. 어제 Bitmap 용으로 작성한 변환기를 작동시키기위한 변환기를 작성하는 것이 어렵지 않습니다.

VB 개발자에게 가장 큰 단점은 모든 문서, 예제 및 talk/help가 C#에서 왔음을 의미합니다. VB 사용자의 눈을 밝게 해줄뿐 아니라 C# 전용 솔루션처럼 보입니다. 마찬가지로 정보 (유선 종류, 패킷 등)는 네트워크 데이터 교환 솔루션처럼 들리게합니다. 현실에서는 다양한 상황에서 VB와 마찬가지로 잘 작동합니다.

관련 문제