重新打开一个封闭的NetworkStream?

时间:2009-08-11 09:13:03

标签: c# sockets c#-2.0 tcpclient networkstream

早上好,

我需要一些建议,我正在使用一个从TcpClient流式传输的networkStream,一切正常,但后来我需要其他地方的一些功能,这需要关闭流。一旦关闭,我似乎无法找到重新打开连接的方法。有人能指出我在这方面的正确方向吗?

以下是我所基于的代码示例:(显然这不是它的工作原理,但我尽可能简化它: - )

private void MyMainFunction()
  {
  ConnectToTcp();

  if(CheckConnection == true)
    {
    DoWorkWithTcp();
    }

  DisconnectFromTcp();

  ConnectViaOtherSource();
  DoOtherSourceWork();
  DisconnectOtherSource();

  ConnectToTcp(); //Excecption thrown, epic fail!
  }

private void ConnectToTcp()
  {
  myClient = new TcpClient(ip, port);
  myNetStream = myClient.GetStream();
  }

private void DisconnectFromTcp()
  {
  myNetStream.Close();
  myClient.Close();
  }

提前致谢,谢谢。

编辑 - 更改了变量拼写名称!糟糕!

编辑 - 抱歉,刚刚意识到问题来自其他地方,感谢您确认此代码是正确的:-)帮助我从其他来源发现问题

2 个答案:

答案 0 :(得分:1)

不确定,因为你没有粘贴整个东西,但

myClient = new TcpClient(ip,port);   myNetStream = sockClient.GetStream();

sockClient不是myClient这是一个错字还是它实际上在代码中?如果是这种情况你需要重新创建sockClient

答案 1 :(得分:1)

问题出现了为什么你必须完全关闭连接,你不能在DoOtherSourceWork()期间保持打开(休眠)吗?

除此之外,代码看起来还可以,创建一个新的TcpClient等,所以我认为它取决于另一方 - 关闭连接时对等软件会做什么?