繁体   English   中英

错误:“传输端点已连接”

[英]Error : “Transport endpoint is already connected”

我正在尝试使用C开发小型聊天服务器。

对于简单的聊天服务器,

  • (传输端点)===(套接字)?
  • 我必须每个客户端使用一个套接字,还是可以将一个套接字重用于多个客户端? 如果是这样,怎么办?
  • 有这样做的标准方法吗?
  • 有没有好的参考资料?

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

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

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

对于C套接字通信示例Unix网络编程书可能是最好的资料。 它具有大量示例程序和说明。

  1. (传输端点)===(套接字)?

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

  1. 我必须每个客户端使用一个套接字,还是可以将一个套接字重用于多个客户端? 如果是这样,怎么办?

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

  1. 有这样做的标准方法吗?

不知道你在问什么。 聊天服务或服务器/客户端模型的标准方法? 对于聊天服务,请查找IRC。 服务器/客户端编程模型有详细记录。 你可以谷歌。

  1. 有没有好的参考资料?

http://beej.us/guide/bgnet/

现在,我相信您了解错误消息的含义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM