我正在Linux 上用 C 语言编写一个简单的即时通讯程序。
现在我有一个程序将套接字绑定到本地机器上的端口,并侦听连接到我的本地机器 IP 和端口的另一个程序发送的文本数据。
好吧,我可以让这个客户端向我的程序发送文本数据,并stdout
在我的本地机器上显示它;但是,我无法编写将数据发送回客户端机器的方法,因为我的程序正忙于侦听和显示客户端机器发送的文本。
我将如何创建一个新进程(监听并显示客户端机器发送给它的文本,然后获取该文本并将其发送到另一个程序的stdout
,而另一个程序负责stdin
发送到客户端机器) 或创建 2 个程序来执行单独的工作(发送、接收和显示),并将适当的数据相互发送?
抱歉,如果这措辞很奇怪,我会澄清是否需要。我查看了exec
, execve
,fork
等,但我很困惑这是否是合适的查看路径,或者是否有更简单的方法我错过了。
任何帮助将不胜感激,谢谢。
编辑:回想起来,我认为使用 2 个单独的程序会更容易完成。一个是 IM 服务器,另一个是 IM 客户端。
IM 客户端将连接到 IM 服务器程序,并将他们想要的任何文本发送到 IM 服务器。然后,IM 服务器只需将发送给它的数据记录在缓冲区/文件中,并将客户端的名称/IP 附加到每个客户端发送给它的文本中,并将该文本(以名称:文本的格式)发送到每个连接的客户端。
这将消除对和的复杂进程间/程序通信的需要stdin
,stdout
而是使用简单的客户端/服务器通信方式,客户端程序显示从服务器发送给它的文本stdout
,并使用stdin
发送任何文本到服务器。
话虽如此,我仍然对有人回答我最初的问题感兴趣:科学。感谢大家的阅读,希望有人能从我的头脑风暴或来自社区的任何答案中受益。