Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are some good resources for learning network programming? [closed]

I recently started attending two classes in school that focus on networking, one regarding distributed systems and another regarding computer networks in general. After completing the first labs for the two classes, I now have a pretty good understand of network protocol and socket concepts with both C and Java.

Now I'm trying to move beyond the basic concepts and become better at communication class and object design, network design patterns, intermediate socket/stream management conventions, important libraries, and general *nix network programming intermediate techniques in either C or OO languages.

Can you suggest any resources that you've had success with?

like image 393
Tony Wong Avatar asked Feb 02 '09 00:02

Tony Wong


3 Answers

Unix network programming by Richard Stevens is a must-have book which discusses many advanced network programming techniques. I've been doing network programming for years, and even now hardly a day goes by without me looking up something in this great reference.

like image 147
Bruno Rijsman Avatar answered Oct 17 '22 01:10

Bruno Rijsman


BeeJ's Guide to Network Programming was where I learned the basic API calls for POSIX systems. There's even a section on how to translate that into Windows code.

I really just stumbled into 'good' network coding practice by trial and error early on. I found what worked and what was efficient and ran with it.

like image 45
Adam Hawes Avatar answered Oct 17 '22 02:10

Adam Hawes


The classic Steven's texts are always a good start (e.g., UNIX Network Programming, Advanced Programming in the UNIX Environment). Other than that, focus on distributed programming techniques and message passing systems. The fact that you are passing messages over a socket isn't as important as understanding how to design an asynchronous distributed architecture.

I would also pick up a copy of the TCP/IP Illustrated as well since understanding things like how IP routing works, how TCP and UDP both work (as well as how they differ) are the most important practical things to know about networks. After that, dig into DNS and HTTP. I haven't found any really good texts about those two... maybe someone will suggest some. If all else fails, read the RFC's (RFC1034/RFC1035 for DNS and RFC2616 for HTTP).

like image 36
D.Shawley Avatar answered Oct 17 '22 00:10

D.Shawley