开发者

Error : "Transport endpoint is already connected"

开发者 https://www.devze.com 2023-03-30 04:14 出处:网络
I am trying to develop a small chat server with C. For a simple chat server, ( Transport endpoint ) === ( socket ) ?

I am trying to develop a small chat server with C.

For a simple chat server,

  • ( Transport endpoint ) === ( socket ) ?
  • Do开发者_运维知识库 i have to use one socket per client, or can I reuse a socket for multiple clients ? If so, how ?
  • Is there a standard way of doing this ?
  • Any good references available ?

Can i get to see some sample implementations ? I have to use gcc compiler and c language for this assignment.


You need one socket/client and no, you cannot reuse sockets. If you have to handle multiple clients you can:

  • create one thread per client and use blocking I/O (preferably with timeout).
  • create single threaded program and use demultiplexing with select/poll/epoll/kqueue and use non-blocking I/O.
  • use asynchronous I/O.

For C socket communication examples The Unix Network Programming book is probably the best source. It has ample of example programs and explanation.


  1. ( Transport endpoint ) === ( socket ) ?

NO. "Endpoint" means IP address with Port number. Socket presents one "Session" and session consists of two endpoints, local endpoint(IP, port) and remote endpoint(IP, port).

  1. Do i have to use one socket per client, or can I reuse a socket for multiple clients ? If so, how ?

One socket per one session. That means a server needs to create a new socket for each remote endpoint( client ). You can reuse socket when it's not in use anymore. Look for SO_REUSEADDR socket option.

  1. Is there a standard way of doing this ?

Not sure what you are asking. A standard way for chat service or for server/client model? For chat service, look for IRC. Server/Client programming model is well documented. You can Google it.

  1. Any good references available ?

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

Now I believe you understand what the error message means.

0

精彩评论

暂无评论...
验证码 换一张
取 消