Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 573435
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 13, 20262026-05-13T13:43:24+00:00 2026-05-13T13:43:24+00:00

Everyone referred to it as Socket Programming or Network Programming in C and we

  • 0

Everyone referred to it as Socket Programming or Network Programming in C and we started using it by using by including sys/socket.h & netinet/in.h. We thought it was 100% true. But question raised in my mind when I saw this book

Internetworking With TCP/IP Volume III: Client-Server Programming and Applications, which was available in 4 different versions

  1. Linux/POSIX Sockets
  2. AT&T TLI (Transport Layer Interface) Sockets
  3. BSD (Berkeley) sockets
  4. Window Sockets

I’m confused. This clearly shows that there is no standard for Socket API.

also I’m surprised to see sys/socket.h & netinet/in.h which are part of POSIX C library in the http://en.wikipedia.org/wiki/Berkeley_sockets . I’m more confused now.

  1. Why isn’t there a standard for this?
  2. What more socket APIs are available?
  3. What are the differences between each of these Socket API?
  4. When People say Just “Network Programming in C” / “Socket Programming” what exactly they are referring to?
  5. Links for any further information?
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-13T13:43:25+00:00Added an answer on May 13, 2026 at 1:43 pm

    Why isn’t there a standard for this?

    The de facto standard is BSD sockets, upon which the Linux, POSIX and Windows sockets APIs are based.

    What more socket APIs are available?

    Nothing that’s still widely used. Before BSD sockets and its derivatives took over the world, there were many. Most of the ones that remain are probably in the embedded world, and even those are going away as mainstream OSes continue to swallow more and more of the embedded market.

    This battle was pretty much fought and over by the mid 90’s. BSD sockets won.

    What are the differences between each of these Socket API?

    There are minor differences among the BSD, Linux and POSIX variants, nothing more serious than any other differences among Unixy operating systems.

    The reason they have a Linux/POSIX version of the book probably has more to do with marketing than anything technical. It answers a question the publisher probably saw a lot, “Why do I need a BSD book, I’m running Linux, not BSD!” Or, more commonly these days: “What’s BSD?”

    From a 10,000 foot view, Winsock is very different from BSD sockets, but because it’s a fairly strict superset of BSD sockets, you can still move your knowledge over. Most of the differences are pure extensions to BSD sockets, mostly to do with the differences in the Windows kernel architecture and the way Windows programs are typically built. For instance, the first really big extension was asynchronous sockets, which makes it much easier to use sockets in a single-threaded Windows GUI program than using pure BSD sockets. Later extensions support special features available in the NT derived kernels that have no simple analog in Unixy systems, like event objects and overlapped I/O.

    For what it’s worth, there are extensions to plain old BSD sockets in some Unixy systems, too, like the aio_*() stuff in Solaris and other systems.

    If your program has to be source compatible with many systems, you either ignore these differences and program to the common base shared by all these systems, or you build some kind of translation layer that lets you use platform features transparently. Apache does the latter for instance, making use of the fastest networking features on each platform, while the core web server code doesn’t care exactly how the networking gets done. Many other programs choose the portable path, since they’re not performance critical, and saving programmer time is therefore more important.

    When People say Just “Network Programming in C” / “Socket Programming” what exactly they are referring to?

    BSD sockets or some variant.

    Links for any further information?

    The Winsock Programmer’s FAQ. Specifically, you might want to look at its resources section, and the FAQ article BSD Sockets Compatibility.

    (Disclaimer: I’m the FAQ’s maintainer.)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 407k
  • Answers 407k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer Yes there is. ServiceKnownTypeAttribute lets you specify a method name… May 15, 2026 at 6:32 am
  • Editorial Team
    Editorial Team added an answer I don't see any reason why you couldn't use SSMS… May 15, 2026 at 6:32 am
  • Editorial Team
    Editorial Team added an answer If you call Dispose on the MySqlConnection (or wrap it… May 15, 2026 at 6:32 am

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.