2016-07-20 2 views
-2

청크로 된 소스에서 데이터를 읽고 바이트 배열에 전체 결과를 저장하는 작업이 있습니다. 특히, "Socket.Receive"에 대한 후속 호출을해야합니다. 미리 최종 크기로 바이트 배열을 할당하고, 매번 데이터를 복사 할 배열 내의 위치를 ​​지정하고 싶습니다. 여분의 사본을 피하기 위해 이것. C++에서는 단순히 배열의 오프셋을 제공합니다. 수신 배열에 바이트 배열 중간에 위치를 지정하는 방법을 알아낼 수 없습니다 ...C# 바이트 배열 - 중간에 쓰기

C#으로이 작업을 수행 할 수 있습니까?

+2

[자세히보기] (https://msdn.microsoft.com/en-us/library/w3xtz6a5(v=vs.110).aspx))? –

+0

데이터의 전체 길이를 알고 있고 그것을 모두 하나의 배열에 저장하고자한다면'Array.Copy'를 사용하면 주어진 소스 오프셋과 목적지 오프셋을 사용하여 한 배열의 내용을 다른 배열로 복사 할 수 있습니다 . –

+0

@YeldarKurmangaliyev *가 작동하지만 *이 경우에는 필요하지 않습니다. –

답변

0

Receive에는 읽기 및 오프셋을 허용하는 오버로드가 있습니다. https://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receive(v=vs.110).aspx - 구체적인 예 : https://msdn.microsoft.com/en-us/library/w3xtz6a5(v=vs.110).aspx

+0

정확하게 필요한 것, 감사합니다! – user4212919

+0

@ user4212919 팁 : Visual Studio를 사용하고 있다고 가정하면,'.' ('socket.Whatever')를 누르면 Intellisense 팝업이 나타납니다. 메서드 이름을 확인한 경우 위쪽 및 아래쪽 화살표를 눌러 사용 가능한 모든 오버로드를 표시 할 수 있습니다. 기본적으로이 정보는 모두 편집기에서 ** 직접 사용할 수 있습니다 ** : http://i.stack.imgur.com/g72P2.png –