迷一样的EndAcceptTcpClient。深坑!该如何解决
迷一样的EndAcceptTcpClient。深坑!
迷一样的EndAcceptTcpClient。
1)从字面上看应该是结束‘“TcpClient”。
2)而从MSDN的解释看,又看不懂了。
3)MSDN又说它是阻塞性语句,会阻止。。。往下运行。
这个EndAcceptTcpClient 到底肿么了?
------解决思路----------------------
EndAcceptTcpClient 是和BeginAcceptTcpClient配套使用的
他们是AcceptTcpClient的异步版本
------解决思路----------------------
你在调用BeginAcceptTcpClient()方法加上后面循环输出数字,你看数字有没?
------解决思路----------------------
它是结束Accept,这才是重点词,而不是TcpClient。不过最重要地,应该重点非重点都搞懂,不要只看一点来代替其它。
这个方法接受 BeginAcceptTcpClient 所返回的连接对象作为参数(在例子中通常用名为ar的参数),这个函数返回一个 TcpClient 对象。
它会阻塞当前线程执行。所以你在I/O线程回调你的方法中才调用它,那么你的线程就不至于“死”在这里了,因为I/O线程转备好了连接之后才会恰好回调你的方法。
------解决思路----------------------
你这个说法很成问题
既然微软提供了异步模式,必然是可以用的
你所说的并发较大时可能丢弃客户端,如果用同步,是不会丢弃,但是所有用户一起卡顿,难道那就不是问题吗
迷一样的EndAcceptTcpClient。
1)从字面上看应该是结束‘“TcpClient”。
2)而从MSDN的解释看,又看不懂了。
3)MSDN又说它是阻塞性语句,会阻止。。。往下运行。
这个EndAcceptTcpClient 到底肿么了?
------解决思路----------------------
EndAcceptTcpClient 是和BeginAcceptTcpClient配套使用的
他们是AcceptTcpClient的异步版本
------解决思路----------------------
你在调用BeginAcceptTcpClient()方法加上后面循环输出数字,你看数字有没?
------解决思路----------------------
迷一样的EndAcceptTcpClient。
1)从字面上看应该是结束‘“TcpClient”。
2)而从MSDN的解释看,又看不懂了。 TcpListener.EndAcceptTcpClient 方法
异步接受传入的连接尝试,并创建新的 TcpClient 来处理远程主机通信。
3)MSDN又说它是阻塞性语句,会阻止。。。往下运行。
这个EndAcceptTcpClient 到底肿么了?
它是结束Accept,这才是重点词,而不是TcpClient。不过最重要地,应该重点非重点都搞懂,不要只看一点来代替其它。
这个方法接受 BeginAcceptTcpClient 所返回的连接对象作为参数(在例子中通常用名为ar的参数),这个函数返回一个 TcpClient 对象。
它会阻塞当前线程执行。所以你在I/O线程回调你的方法中才调用它,那么你的线程就不至于“死”在这里了,因为I/O线程转备好了连接之后才会恰好回调你的方法。
------解决思路----------------------
Accept不要用异步模式,既复杂又不可靠。
不可靠指响应时间不可靠,在并发较大的时候容易出现丢弃客户端的问题。
你这个说法很成问题
既然微软提供了异步模式,必然是可以用的
你所说的并发较大时可能丢弃客户端,如果用同步,是不会丢弃,但是所有用户一起卡顿,难道那就不是问题吗