c语言 - 错误:"Transport endpoint is already connected"



我正在尝试用c开发一个小型聊天服务器。

对于一个简单的聊天服务器,
  • (传输终端)=== (socket) ?
  • 我是否必须为每个客户端使用一个套接字,或者我可以为多个客户端重用套接字?
  • 有标准的方法吗?有好的参考资料吗?

我可以看到一些示例实现吗?我必须使用gcc编译器和c语言。

你需要一个套接字/客户端,不,你不能重用套接字。如果你必须处理多个客户端,你可以:

  • 为每个客户端创建一个线程并使用阻塞I/O(最好使用超时)。
  • 创建单线程程序,并使用select/poll/epoll/kqueue来解复用,并使用非阻塞I/o
  • 使用异步I/o

对于C套接字通信示例,Unix网络编程书可能是最好的来源。

  1. (传输终端)=== (socket) ?

。"端点"是指带有端口号的IP地址。套接字表示一个"会话",会话由两个端点组成,本地端点(IP,端口)和远程端点(IP,端口)。

  1. 我必须使用一个套接字每个客户端,或者我可以重用一个套接字多个客户端?

每个会话一个套接字。这意味着服务器需要为每个远程端点(客户端)创建一个新的套接字。当socket不再使用时,您可以重用它。查找SO_REUSEADDR套接字选项。

    有标准的方法吗?

不知道你在问什么。聊天服务或服务器/客户端模型的标准方式?对于聊天服务,请查找IRC。服务器/客户端编程模型有很好的文档。你可以谷歌一下。

    有好的参考资料吗?
http://beej.us/guide/bgnet/

现在我相信你明白错误信息是什么意思了

相关内容

最新更新