谢谢。
希望对你有所帮助
在C、C++、Java、Ruby中,套接字基本上都是相同的。在高级语言中,它们稍微容易些(因为内置类处理了样板),如果你能在C中编写套接字代码,那么只要有翻译参考,你就可以在任何地方做到。
@Kellogs 提出了一个很好的观点,Windows有他们自己的Socket API,在我的经验中(通常)在Windows上比提供的Posix实现表现优异。这些API非常相似。我会将其比作OpenGL和DirectX之间的类比。如果你真正掌握了其中一个,那么你就可以通过参考来理解另一个。
同意kellogs的观点。Windows和大多数主流符合POSIX标准的操作系统都支持基本的BSD套接字API。除了Berkeley套接字之外,每个平台还提供了额外的专有API以提高性能和可扩展性。这些扩展API不仅严格限制于套接字 - 它们可以在任何I/O操作上工作(即磁盘文件、命名管道等)。例如,Linux除了传统的select()和poll()外,还有自己的epoll机制,BSD有kqueue,Windows有WSAevent*,WSAaAsync*和I/O完成端口API。
这些差异在较低级别的语言(如C、C++或Pascal)中最为明显。
C#、Java、Python、Ruby等编程语言相对于C语言而言,属于“高级”语言,它们提供了强大的技术来隔离您与底层API的直接交互。您可以使用每个平台提供的广泛运行时类库,而不是直接使用裸奔的Socket API。例如,在Python中编写TCP/IP服务器,您可以简单地使用SocketServer类。同样,在C#中,您可以使用WebClient从网络上下载文件。在C++中,您可以使用Boost库。当然,您也可以在应用程序中直接使用原始socket API。