BSD Sockets Programming From a Multi-Language Perspective - M. Jones

BSD Sockets Programming From a Multi-Language Perspective

(Autor)

Buch | Softcover
441 Seiten
2003
Charles River Media (Verlag)
978-1-58450-268-5 (ISBN)
108,45 inkl. MwSt
  • Titel ist leider vergriffen;
    keine Neuauflage
  • Artikel merken
Detailing the efficient and effective uses of the BSD Sockets API for networked application development in multiple languages, this text describes the BSD API in detail and identifying the prupose of each function, including the rarely discussed behavioural side effects of functions.
BSD Sockets Programming from a Multi-Language Perspective is written for software developers who need to create a variety of network applications. It begins by detailing the efficient and effective uses of the BSD Sockets API for networked application development in multiple languages. From there the BSD API is covered in detail and the purpose of each function and socket option is identified, including the advanced behavioral side-effects of each. Having a thorough understanding of these issues and techniques is often the difference between being a novice and professional network application developer. Optimizing networked applications and avoiding common pitfalls are also addressed.

After the solid foundational coverage of the Sockets API in Part I, Part II investigates it from a variety of language perspectives. Using six different languages in all, including imperative languages (C), object-oriented languages (Java), and scripting languages (Perl), you learn the advantages and disadvantages of each language as they relate to the development of networked applications and the Sockets API.

Finally, in Part III, a set of software patterns is discussed for each language. Patterns include a simple HTTP server and SMTP client, and various Sockets communication styles (stream, datagram, multicast, and broadcast). These patterns can be used as the basis for more complex applications or to give you a quick-start when building networked applications. The patterns also illuminate the differences between the network APIs for each language and identify how certain languages make patterns simple and others make them complex. The accompanying CD-ROM includes all of the source code from the book, including the patterns detailed in Part III, as well as open source interpreters and other tools.

M. Tim Jones is an embedded software architect and the author of numerous books, including AI Application Programming, Second Edition (Charles River Media), BSD Sockets Programming from a Multilanguage Perspective (Charles River Media), Artifi cial Intelligence: A Systems Approach, and many articles on a variety of technical subjects. His engineering background ranges from the development of kernels for geosynchronous spacecraft to embedded systems architecture and networking protocols development. Tim is a consultant engineer for Emulex Corp. in Longmont, Colorado.

Introduction to Sockets Programming
1 Networking Overview
What Is the Internet?
Internet Model of Communication
The IP Protocol Suite
Network Layer
Transport Layer
Application Layer
Types of Communication
Stream
Datagram
Broadcast
Multicast
Packet Processing in a Network Stack
Addressing
IP Addresses
Subnetting
Introduction to IP Routing
Simple Routing Example
Local (Interior) Ethernet Routing
Exterior Routing
Network Entities
Hosts
Bridges
Routers
Gateways
2 Introduction to Sockets Programming
The Sockets Programming Paradigm
Ports
Sockets
Addressing
Sample Server
Source Discussion
Sample Client
Source Discussion
Client/Server Symmetry
Network Byte Order
Swapping Byte Order
3 Standard BSD API Functions
socketFunction
bindFunction
listenFunction
acceptFunction
connectFunction
recv/recvfromFunction
send/sendtoFunction
closeFunction
htons/ntohs/htonl/ntohlFunctions
inet_addr/inet_aton/inet_ntoaFunctions
4 Advanced Sockets Functions
selectFunction
getsocknameFunction
getpeernameFunction
getsockopt/setsockoptFunctions
shutdownFunction
gethostname/sethostnameFunctions
gethostbyaddrFunction
gethostbynameFunction
getservbynameFunction
getservbyportFunction
5 Socket Options
Socket Options API
Sockets Layer Options
TCP Layer Options
IP Layer Options
6 Advanced Sockets Programming Topics
Out-of-Band (OOB) Data
Nonblocking Sockets
Determining Peer Socket Closure
Resolving a Domain Name to an IP Address
Writing Servers for Multi-homed Nodes
Timing Out a Socket Connect
Data Framing (TCP vs. UDP)
Connectionless and Connected Datagram Sockets
Timing Out a Read or Write Operation
Determining Peer Information
Determining the Protocol Argument for Socket
Identifying Service Ports and Protocols
Optimizing Sockets Applications
Ensuring Full-Sized Segments
Optimizing the Send and Receive Buffer Sizes
Socket Buffer Sizes and TCP
Socket Buffers and Performance
Configuring the Socket Buffer Sizes
Other Options
Minimizing Latency with TCP_NODELAY
Reading/Writing All Available Data
Advantages and Disadvantages to Select
Using Multiple Sockets
Separating Control and Data Connections
Using Stack Callbacks
Using Zero-Copy Buffer Functions
Using UDP instead of TCP
Stack Selection
Stack Configuration
8 Sockets Programming Pitfalls
Failing to use Function Return values
Ignoring Peer Socket Closure
Ignoring Endianness of Parameters in API Functions
Making Protocol Framing Assumptions
Causing “Address in Use” Error for Bind
Listening on Multiple Interfaces
Initial UDP Datagrams Disappearing
Defensive Programming
Using Safe Functions to Avoid Buffer Overflow
Rigorously Checking Error Returns
Rigorously Checking Input and Output Parameters
Declaring String Arrays
Minimizing Protocol Feedback
Initializing All Variables
Enabling All Compiler Warnings
Part II Sockets Programming from a Multi-Language Perspective
9 Network Programming in the C Language
C Language Overview
Origin of the C Language
C Language Heritage
Tools
Compiler/Tools Used
Networking API Used
Where to Download
Networking API for C
Sockets API Summary
Sockets API Discussion
10 Network Programming in Java
Java Language Overview
Origin of the Java Language
Java Language Heritage
Tools
Interpreter/Tools Used
Networking API Used
Where to Download
Networking API for Java
Sockets API Summary
Sockets API Discussion
Specialized Networking APIs for Java
Java URL Class for HTTP
11 Network Programming in Python
Python Language Overview
Origin of the Python Language
Python Language Heritage
Tools
Interpreter/Tools Used
Networking API Used
Where to Download
Networking API for Python
Sockets API Discussion
Specialized Networking APIs for Python
Python smtplibModule
Python httplib Module
Python SocketServerModule
12 Network Programming in Perl
Perl Language Overview
Origin of the Perl Language
Perl Language Heritage
Tools
Interpreter/Tools Used
Networking API Used
Where to Download
Networking API for Perl
Sockets API Discussion
Specialized Networking APIs for Perl
Perl Net::SMTPModule
Perl LWP::SimpleModule
13 Network Programming in Ruby
Ruby Language Overview
Origin of the Ruby Language
Ruby Language Heritage
Tools
Interpreter/Tools Used
Networking API Used
Where to Download
Networking API for Ruby
Class vs. Instance Methods
Sockets API Summary
Sockets API Discussion
Specialized Networking APIs for Ruby
Ruby Net::SMTPClass
Ruby Net::HTTPClass
14 Network Programming in Tcl
Tcl Language Overview
Origin of the Tcl Language
Tcl Language Heritage
Tools
Interpreter/Tools Used
Networking API Used
Where to Download
Networking API for Tcl
Sockets API Discussion
Part III Software Patterns from a Multi-Language Perspective
15 Software Patterns Introduction
Stream Server/Client Design
Datagram Server/Client Design
Broadcast Datagram Server/Client Design
Multicast Datagram Server/Client Design
Simple HTTP Server Design
Simple SMTP Client Design
16 Network Code Patterns in C
Stream (TCP) Server/Client
Stream Server
Stream Client
Datagram (UDP) Server/Client
Datagram Server
Datagram Client
Multicast Server/Client
Multicast Server
Multicast Client
Broadcast Server/Client
Broadcast Server
Broadcast Client
Simple HTTP Server
Simple SMTP Client
17 Network Code Patterns in Java
Stream (TCP) Server/Client
Stream Server
Stream Client
Datagram (UDP) Server/Client
Datagram Server
Datagram Client
Multicast Server/Client
Multicast Server
Multicast Client
Simple HTTP Server
Simple SMTP Client
18 Network Code Patterns in Python
Stream (TCP) Server/Client
Stream Server
Stream Client
Datagram (UDP) Server/Client
Datagram Server
Datagram Client
Multicast Server/Client
Multicast Server
Multicast Client
Broadcast Server/Client
Broadcast Server
Broadcast Client
Simple HTTP Server
Simple SMTP Client
19 Network Code Patterns in Perl
Stream (TCP) Server/Client
Stream Server
Stream Client
Datagram (UDP) Server/Client
Datagram Server
Datagram Client
Multicast Server/Client
Multicast Server
Multicast Client
Broadcast Server/Client
Broadcast Server
Broadcast Client
Simple HTTP Server
Simple SMTP Client
20 Network Code Patterns in Ruby
Stream (TCP) Server/Client
Stream Server
Stream Client
Datagram (UDP) Server/Client
Datagram Server
Datagram Client
Multicast Server/Client
Multicast Server
Multicast Client
Broadcast Server/Client
Broadcast Server
Broadcast Client
Simple HTTP Server
Simple SMTP Client
21 Network Code Patterns in Tcl
Introduction
Stream (TCP) Server/Client
Stream Server
Stream Client
Datagram (UDP) Client
Datagram Client
Multicast Server/Client
Multicast Server
Multicast Client
Broadcast (UDP) Client
Simple HTTP Server
Simple SMTP Client
Appendix A About the CD-ROM
System Requirements
Operating System Requirements
On the CD-ROM
Software Patterns
Software Tools
Software License
Appendix B Acronyms

Verlagsort Hingham
Sprache englisch
Maße 188 x 228 mm
Gewicht 840 g
Themenwelt Informatik Betriebssysteme / Server Unix / Linux
ISBN-10 1-58450-268-1 / 1584502681
ISBN-13 978-1-58450-268-5 / 9781584502685
Zustand Neuware
Haben Sie eine Frage zum Produkt?
Mehr entdecken
aus dem Bereich
Die wichtigen Befehle

von Daniel J. Barrett

Buch | Softcover (2024)
O'Reilly (Verlag)
16,90
das umfassende Handbuch

von Dirk Deimeke; Daniel van Soest; Stefan Kania

Buch | Hardcover (2023)
Rheinwerk (Verlag)
69,90
das umfassende Handbuch

von Michael Kofler

Buch | Hardcover (2023)
Rheinwerk (Verlag)
49,90