C#TcpClient怎么保持连接?

长空X 2015-01-26 09:42:02
我这用到了TCPClieent,便是用流传一次后,流关闭了,连接也直接关闭了。再一次向本地这个tcpclient发数据时,显示非法套接字 所以上一次就要关闭。。
        public static void SendTcpClient( string sendStream ,TcpClient client)
{
var tempStream=client.GetStream(); //得到网络流
// var sw =new StreamWriter( tempStream ); //写入器
Byte[] bit = Encoding.UTF8.GetBytes( sendStream );
tempStream.Write( bit,0,bit.Length );
tempStream.Close();
client.Close();
}
我试过不关流,但是对面读取时会一直挂起。
...全文
1168 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SomethingJack 2015-01-27
  • 打赏
  • 举报
回复
你都把它关闭了 你说它能不能连接呢
江南小鱼 2015-01-27
  • 打赏
  • 举报
回复
引用 楼主 hjkl950217 的回复:
我这用到了TCPClieent,便是用流传一次后,流关闭了,连接也直接关闭了。再一次向本地这个tcpclient发数据时,显示非法套接字 所以上一次就要关闭。。
        public static void SendTcpClient( string sendStream ,TcpClient client)
        {
            var tempStream=client.GetStream(); //得到网络流
           // var sw =new StreamWriter( tempStream ); //写入器
            Byte[] bit = Encoding.UTF8.GetBytes( sendStream ); 
            tempStream.Write( bit,0,bit.Length );
            tempStream.Close();
            client.Close();
        }
我试过不关流,但是对面读取时会一直挂起。
1、去掉client.Close(),然后试下是否可以多次发送 2、如果步骤一测试是否,检查服务器端代码是否有问题
生财 2015-01-27
  • 打赏
  • 举报
回复
接收用一个线程 while(true){ var tempStream=client.GetStream(); //得到网络流 var sw =new StreamWriter( tempStream ); //写入器             Byte[] bit = Encoding.UTF8.GetBytes( sendStream );  } 发送: public static void SendTcpClient( string sendStream ,TcpClient client) { var tempStream=client.GetStream(); //得到网络流 Byte[] bit = Encoding.UTF8.GetBytes( sendStream ); tempStream.Write( bit,0,bit.Length ); }
长空X 2015-01-27
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
你这个 TcpClient 到底是客户端的,还是服务器端的?
我是这么想的。。写了一个类 这是里面的一个发送方法。。所以服务器和客户端都在用这个。读的时候好像是要循环读。所以要关流。。我就是不知道怎么办
长空X 2015-01-27
  • 打赏
  • 举报
回复
引用 4 楼 daonidedie 的回复:
接收用一个线程 while(true){ var tempStream=client.GetStream(); //得到网络流 var sw =new StreamWriter( tempStream ); //写入器             Byte[] bit = Encoding.UTF8.GetBytes( sendStream );  } 发送: public static void SendTcpClient( string sendStream ,TcpClient client) { var tempStream=client.GetStream(); //得到网络流 Byte[] bit = Encoding.UTF8.GetBytes( sendStream ); tempStream.Write( bit,0,bit.Length ); }
发的时候不关流的话 对面会一直读 关流了连接就断了。。
长空X 2015-01-27
  • 打赏
  • 举报
回复
引用 7 楼 Z65443344 的回复:
你执行了client.Close();它当然就关闭了
关不关客户端都一样。。但是流关了就断了
於黾 2015-01-27
  • 打赏
  • 举报
回复
你执行了client.Close();它当然就关闭了
devmiao 2015-01-26
  • 打赏
  • 举报
回复
google tcp 长连接 socket
  • 打赏
  • 举报
回复
引用 楼主 hjkl950217 的回复:
我试过不关流,但是对面读取时会一直挂起。
对面如果死循环一直读,能有什么办法?
  • 打赏
  • 举报
回复
你这个 TcpClient 到底是客户端的,还是服务器端的?

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧