聊天

2016-08-13 121 views
-1

我想在服务器和客户机之间创建一个聊天程序,我想在客户端或服务器,以便能够随时发送短信到另一端,而不必等待例如:聊天

Client: hi 
Server: hi 
Server: I'm the server. 
Server: How are you? 
Client: Good. 

在本例中,服务器不会等待客户端回复并随时发送另一条消息。

我应该使用函数select吗?如果是这样,我应该如何确定超时值并且超时值是否是忙等待的解决方案?

select函数是这个问题的最佳方法吗?

谢谢。

+0

语言?平台?错误?题? – EJP

回答

1

使用select似乎是正确的方法,尤其是如果您希望程序在Windows上工作。这将允许您阻止该进程并同时等待来自多个客户端的消息。

一般而言,您应该将超时设置为NULL,以便服务器将无限期阻止来自客户端的请求。如果您想额外唤醒服务器,则由于其他原因,超时只会有用。

如果你使用的是Unices(比如Linux),那么使用poll会更容易和更高效。这基本上是一样的,但界面更容易处理。如果文件描述符数字大于1024,则使用select会变得非常尴尬,如果您希望服务器处理大量客户端,这是一个问题。

如果您专门针对Linux并且不关心可移植性,您甚至可以使用epoll,它具有更多的性能优势,并且可以说更易于使用。

如果您只针对Windows,则可以为每个套接字create event objects,然后使用WaitForMultipleObjectsEx等待来自其中的任何套接字的数据。这提供了与poll类似的功能,但API非常复杂。