在c+上编程tcp的套接字有哪些替代方案+;linux P>是否可以在Linux C++上使用只打开、读取和写入系统功能来编程网络客户端和服务器? 哪些低级别的替代方案具有套接字
谢谢大家。你们需要的不仅仅是这三个 您需要使用在c+上编程tcp的套接字有哪些替代方案+;linux P>是否可以在Linux C++上使用只打开、读取和写入系统功能来编程网络客户端和服务器? 哪些低级别的替代方案具有套接字,c++,linux,networking,C++,Linux,Networking,谢谢大家。你们需要的不仅仅是这三个 您需要使用socket、bind、listen、connect、accept,通常还需要使用select、poll或特定于平台/更高性能的现代epoll(Linux)和kqueue(BSD) 根据套接字类型,您可以使用读取和写入,但可能需要发送到,从 您可以想象使用“仅读写”的唯一方法是让inetd超级服务器为您打开网络端口,并将端口映射到STDIN和STDOUT。如果这是您的目标,请查看inetd。如果你走这条路,你甚至不需要读和写,你可以直接使用print
socket
、bind
、listen
、connect
、accept
,通常还需要使用select
、poll
或特定于平台/更高性能的现代epoll
(Linux)和kqueue
(BSD)
根据套接字类型,您可以使用读取
和写入
,但可能需要发送到
,从
您可以想象使用“仅读写”的唯一方法是让inetd超级服务器为您打开网络端口,并将端口映射到STDIN和STDOUT。如果这是您的目标,请查看inetd。如果你走这条路,你甚至不需要读
和写
,你可以直接使用printf
。inetd下的程序甚至不需要知道它是一个网络程序
为什么不试试高级库呢
查看Boost.Asio
答案不错,但建议使用“epoll”比建议使用“选择”和“轮询”更好,尤其是对于需要扩展到大量开放连接的服务器。谢谢@MichaelAaronSafyan-很高兴知道这一点。我有点过时了,我的知识大多是跨平台的。我已经有几年没有写过任何重要的网络代码了,也从来没有专门为Linux编写过。不过我会补充你的建议!他不需要使用
send()
和recv()
:他可以使用read()
和write()。
实际上我的意思是包括sendto
和recvfrom
(@EJP-这不是一个限制性的列表,但如果他想做UDP读/写,实际上是不够的)事实上,我想知道关于低级网络编程。如何在linux上实现套接字?他们是否使用其他API系统函数来打开连接、发送和接收消息?