首页 新闻 会员 周边

一个简单的socket问题

0
[已解决问题] 解决于 2010-09-13 11:08

先看部分代码:

 private void Run()
        {
            var ip = Dns.GetHostAddresses(Dns.GetHostName());
            var ipep = new IPEndPoint(IPAddress.Any, 6002);
            TcpListener listener = new TcpListener(ipep);
            listener.Start();

            var client = listener.AcceptTcpClient();
            Ns = client.GetStream();
            while (true)
            {
                try
                {                
                    byte[] buffer = new byte[client.ReceiveBufferSize];
                    Ns.Read(buffer, 0, buffer.Length);
                    Ns.Flush();
                    var Data = tool.DeserializeBinary(buffer) as DY.Model.ManagerObject;

       (.....下面省略)

这是一个线程运行的代码

现在的问题是客户端第一次运行正常,然后关掉第二次再运行时,能连接上,但是发送数据时服务器端就接收不到。

如果把var client = listener.AcceptTcpClient(); Ns = client.GetStream();这两句放到while循环里面的情况是每次发开客户端只有第一次服务器端才能收到,之后发都收不到。

请高手指点

拖鞋王子的主页 拖鞋王子 | 初学一级 | 园豆:37
提问于:2010-08-30 20:31
< >
分享
最佳答案
0

var client = listener.AcceptTcpClient(); 肯定是要放到 while(true) 里面去的,

如果 client 有效,你就需要把 client 保存起来,然后同样的通过 while(true) 不断从 client 中接收数据.

Tcp是长连接,你需要保持连接,在服务器端必须在连接关闭和出错前保存对连接的引用.

Launcher | 高人七级 |园豆:45045 | 2010-08-31 09:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册