为了账号安全,请及时绑定邮箱和手机立即绑定

一个简单的socket问题

一个简单的socket问题

月关宝盒 2018-09-12 06:07:13
先看部分代码: 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循环里面的情况是每次发开客户端只有第一次服务器端才能收到,之后发都收不到。请高手指点
查看完整描述

1 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

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

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

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


查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 341 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信