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

时间:2011-08-21 19:06:17

标签: c sockets network-programming unix-socket

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

对于简单的聊天服务器,

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

我能看到一些示例实现吗?我必须使用gcc编译器和c语言进行此分配。

2 个答案:

答案 0 :(得分:4)

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

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

对于C套接字通信示例Unix Network Programming本书可能是最佳来源。它有大量的示例程序和解释。

答案 1 :(得分:1)

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

NO。 “端点”表示带有端口号的IP地址。套接字呈现一个“会话”,会话由两个端点组成,即本地端点(IP,端口)和远程端点(IP,端口)。

  
      
  1. 我是否必须为每个客户端使用一个套接字,或者我可以重用套接字   多个客户?如果是这样,怎么样?
  2.   

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

  
      
  1. 有没有标准的方法呢?
  2.   

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

  
      
  1. 有哪些好的参考资料?
  2.   

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

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