2010-07-11 3 views
0

새내기 질문입니다. 다음 코드가 있습니다. 개체가 ClientRequest에 전달되어야하므로 오류가 발생합니다. 그러나 스트림을 객체로 전달하는 방법이 확실하지 않습니다.스트림을 개체로 변환 하시겠습니까?

TcpClient _client = _listener.AcceptTcpClient();
NetworkStream _clientStream = _client.GetStream(); ThreadPool.QueueUserWorkItem(ClientRequest, _clientStream);

감사 ClientRequest은과 같이 선언 된만큼 그 코드 아무 문제가 없습니다

+1

ClientRequest에 대한 코드 또는 적어도 서명을 추가하십시오. –

답변

0

:

public void ClientRequest(Object state) { 
... 
} 
0

문제는 아마 당신이를 통과 할 수 하지입니다 스트림으로 개체로 - 그물에있는 모든 개체입니다, 그래서 개체 ("확대"변환이며, 따라서 지정할 필요가 없습니다) 문제가되지 않아야 캐스팅.

내 생각 엔 ClientRequest가 NetworkStream 또는 뭔가를 전달할 것으로 예상하고 있습니다.이 개체는 얻을 수없는 개체를 얻습니다. 개체를 얻으려면 NetworkStream에 캐스팅해야합니다. 정확히.

+0

기본적으로 networksteam을 ClientRequest 함수에 전달하여 클라이언트에 읽고 쓸 수 있습니다. 하지만 ThreadPool.QueueUserWorkItem을 사용하면 객체를 전달할 수 있습니다. void ClientRequest(object request) { byte[] response = ObjectToByteArray(request); Console.WriteLine("\nClients request:\n{0}\n", Encoding.ASCII.GetString(request)); } Im 신입생과 만남 : – arbme

+0

@arbme : right. 개체를 전달할 수 있습니다. 그러나 * 모든 것은 * 객체입니다. 그래서 당신은 당신이 좋아하는 것을 전달할 수 있어야합니다. 그 트릭은 함수에서, 당신이 알고있는 것으로 그것을 다시 던지기를 원합니다 - 마치'NetworkStream ns = (NetworkStream) request;'처럼, 당신의 경우'request' 대신에'ns'로 작업하십시오. – cHao

+0

@arbme : 또한 스트림이나 바이트 배열을 전달하는지 여부에 대해 조금 혼란스러워 보입니다. 아마도 캐스트가 당신을 바로 잡는 데 도움이 될 것입니다. – cHao

관련 문제