套接字实现的指针
本文关键字:指针 实现 套接字 | 更新日期: 2023-09-27 18:19:00
我已经开始玩套接字,并开始在一个小游戏测试的目的。服务器是异步的,它工作得很好,但不是很好,所以我正在寻找那些在他们的应用程序中获得良好结果的人的指针。
场景:在应用程序中,我在Application_Launching/Application_Activated中连接到服务器,在Application_Closing/Application_Deactivated中断开连接。我注意到,在MSDN上的"井字游戏套接字样本"中,每当数据被发送到应用程序时,他们都会关闭服务器上的套接字,并且每次在数据从应用程序发送到服务器之前进行连接。
讨论:人们是否更喜欢管理应用生命周期事件中的连接?为每个操作打开/关闭套接字似乎相当奇怪,就像它们在示例中所做的那样。似乎从一开始就抵消了使用套接字的优点。
场景:假设我们正在实现某种配对方法,这是相对长期运行的。以20秒为例。
讨论:当客户端请求对手时,您是否希望循环客户端列表并定期休眠,直到找到合适的对手?或者您会建议将客户机添加到寻找对手的客户机池中,并在单独的线程中定期循环此操作?
底线是,如果有人使用套接字成功地实现了Windows Phone应用/游戏,我很想知道你是如何处理这些事情的:
- <
- 连接生命周期/gh>
- 服务器上长时间运行的操作
- 客户端"随时"退出应用程序,包括在服务器上执行长时间运行的操作。
关于打开/关闭:
MSDN示例在每次操作后关闭套接字是大多数人可能使用的一种简洁实用的方法。然而,在套接字编程中没有正确的方法。事实上有很多!
关于线程:
- 如果你使用(同步)阻塞方法,如
Listen
,那么循环和睡眠是一个坏主意。你不能取消阻塞方法。 - 如果您使用(异步)非阻塞方法,如
BeginSend
或BeginListen
有关异步套接字编程的好例子,请查看开源网络通信库networkComms.net。