Know of any cross platform socket library (windows & Linux) in C?

筅森魡賤 提交于 2019-12-20 18:00:18

问题


I am looking to do socket communications (listen, accept, connect, recv, send, disconnect) in both linux and windows. My project is in C, so unless someone can think of a way for me to integrate C++ libraries into a C project the library will have to be in C as well.

Ultimately, I would like the library to have ipv6 support and non-blocking mode, however, these things are not essential.

Does anyone know of any libraries/cross-platform example code? Even just large code snippets would help. So far the few socket libraries I have found have been in C++.


回答1:


Off-hand, I can think of four libraries:

  • GLib Channels from the GLib framework can abstract socket usage, but you'll need platform-specific code for socket creation.

  • libuv is a platform abstraction layer for node.js and handles, among other things, sockets and async IO.

  • The Apache Portable Runtime also contains network routines.

  • The Netscape Portable Runtime does socket manipulation as well.




回答2:


The plibsys library provides all the requested features: cross-platform and portable, lightweight, provides socket IPv4 and IPv6 support as well as many other useful things like multithreading. Works with sockets in non-blocking mode (though you can switch to a blocking one, too). Has quite a good documentation with the test code examples.




回答3:


I don't know one library that complies both Windows and Linux but I think winsock is similar enough to Linux socket programming.

In particular it supplies you 'select()' and the other functions mentioned. I guess you will need a very thin #ifdef wrapper to avoid type casting warnings.

See here the winsock page for select




回答4:


check HS Sockets C Source Library for Windows and Linux




回答5:


Ptlib provides cross platform C++ code that works well for sockets. www.opalvoip.org

Copes nicely with threads. Some support for mac and BSD. Under active development and maintainance. MPL Core library in Ekiga - the preferred desktop app that does SIP & H.323

For windows - it compiles with MSVC. for linux, it compiles with gcc autoconf make etc.

OK, it is C++, but you can work with that... Have a the source inside ptlib/samples - there are many examples of using ptlib there.




回答6:


The Boost library includes these features.



来源:https://stackoverflow.com/questions/9201244/know-of-any-cross-platform-socket-library-windows-linux-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!