【发布时间】:2011-05-30 07:22:46
【问题描述】:
我正在编写一个 C 网络服务器,它将两个客户端配对在一起并允许它们相互发送消息。
目前,每个客户端在服务器中都有自己的线程,在线程中我有一个循环,基本上是while((numBytesRead = read(fd, buffer, 1024)) > 0)。这工作正常,我能够接收消息,然后将它们回显给客户端。
我的问题是,虽然我不确定通过服务器将消息从一个客户端传输到另一个客户端的最佳方式。
我认为我最大的问题是 read() 阻塞,所以我无法向客户端发送消息,直到客户端向服务器发送一些文本以便读取停止阻塞。
有没有办法解决这个问题?我最初的想法是创建一个线程用于从客户端读取,一个线程用于写入客户端,但如果读取在一个线程中阻塞,然后我尝试写入同一个文件描述符,那么这不会导致问题吗?
感谢任何帮助! :)
【问题讨论】:
标签: c multithreading networking tcp pthreads