none
TCP连接 ns = TcpClient.GetStream()这个流如何使用!?? RRS feed

  • 问题

  •         服务端:

                  NetworkStream ns = tcpclient.GetStream();
              
                    StreamWriter sw = new StreamWriter(server.GetStream());

                         sw.Write(filename);
                           sw。Flush();

    客户端

          NetworkStream ns = tcpclient.GetStream();

         StreamReader sr = new StreamReader(server.GetStream());


               sr.ReadToEnd();《——————这个没有反应!!

    为什么非得等到服务端的StreamWriter。close 关闭的时候客户端才能接受导数据

    如果连接都关闭了,这个流每次只能发一次数据下次再发还得再连接 这么麻烦!!!

    写到流离得数据客户端应该自动能读取到,类似QQ的功能每次发一句话 得每次建立个连接!?

    使用问题还是这个类就这样??

     


    vc815
    2010年7月31日 7:33

答案

  • 是,ReadToEnd这个方法是会组塞。如果你需要不关闭连接就可以读取数据的话,建议用BeginRead和 EndRead 方法进行通信,在传递给BeginRead的回调方法里面处理读到的数据。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 vc815 2010年8月1日 5:38
    2010年8月1日 4:17
    版主

全部回复

  • http://msdn.microsoft.com/zh-cn/library/system.net.sockets.networkstream.aspx

    NetworkStream 类提供在阻止模式下通过Stream 套接字发送和接收数据的方法。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2010年7月31日 17:05
    版主
  • http://msdn.microsoft.com/zh-cn/library/system.net.sockets.networkstream.aspx

    NetworkStream 类提供在阻止模式下 通过Stream 套接字发送和接收数据的方法。



    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP


    所谓的组织模式 什么含义 我没能理解!

    是必须关闭流客户端才能接受到流上的数据???


    vc815
    2010年8月1日 4:07
  • 是,ReadToEnd这个方法是会组塞。如果你需要不关闭连接就可以读取数据的话,建议用BeginRead和 EndRead 方法进行通信,在传递给BeginRead的回调方法里面处理读到的数据。

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    • 已标记为答案 vc815 2010年8月1日 5:38
    2010年8月1日 4:17
    版主