我正在尝试用c开发一个小型聊天服务器。
对于一个简单的聊天服务器,- (传输终端)=== (socket) ?
- 我是否必须为每个客户端使用一个套接字,或者我可以为多个客户端重用套接字? 有标准的方法吗?有好的参考资料吗?
我可以看到一些示例实现吗?我必须使用gcc编译器和c语言。
你需要一个套接字/客户端,不,你不能重用套接字。如果你必须处理多个客户端,你可以:
- 为每个客户端创建一个线程并使用阻塞I/O(最好使用超时)。
- 创建单线程程序,并使用select/poll/epoll/kqueue来解复用,并使用非阻塞I/o
- 使用异步I/o
对于C套接字通信示例,Unix网络编程书可能是最好的来源。
- (传输终端)=== (socket) ?
。"端点"是指带有端口号的IP地址。套接字表示一个"会话",会话由两个端点组成,本地端点(IP,端口)和远程端点(IP,端口)。
- 我必须使用一个套接字每个客户端,或者我可以重用一个套接字多个客户端?
每个会话一个套接字。这意味着服务器需要为每个远程端点(客户端)创建一个新的套接字。当socket不再使用时,您可以重用它。查找SO_REUSEADDR套接字选项。
有标准的方法吗?
不知道你在问什么。聊天服务或服务器/客户端模型的标准方式?对于聊天服务,请查找IRC。服务器/客户端编程模型有很好的文档。你可以谷歌一下。
http://beej.us/guide/bgnet/有好的参考资料吗?
现在我相信你明白错误信息是什么意思了