Files
org_roam/20241213005156-socket_programming_in_c.org~
2025-12-14 21:07:46 +00:00

32 lines
1.5 KiB
Org Mode
Executable File

:PROPERTIES:
:ID: efe0360d-8d81-4372-833d-ad58e67d17c6
:END:
#+title: Socket Programming in C
#+filetags: :networking:coding:notes:
From: [[https://www.linuxhowtos.org/C_C++/socket.htm][Web Link]]
* Steps:
The steps involved in establishing a socket on the client side are as follows:
1. Create a socket with the socket() system call
2. Connect the socket to the address of the server using the connect() system call
3. Send and receive data. There are a number of ways to do this, but the simplest is to use the read() and write() system calls.
The steps involved in establishing a socket on the server side are as follows:
1. Create a socket with the socket() system call
2. Bind the socket to an address using the bind() system call. For a server socket on the Internet, an address consists of a port number on the host machine.
3. Listen for connections with the listen() system call
4. Accept a connection with the accept() system call. This call typically blocks until a client connects with the server.
5. Send and receive data
* Socket types:
When you create a socket, you must specify the *address domain* and the *socket type*, the client and server can only communicate if they are of the same type and in the same domain.
The two most common address domains:
- unix domain (they share common file system)
- internet domain
The two most common socket types:
- stream sockets (continuous stream of characters) - uses tcp
- datagram sockets (reads the entire messages at once) - uses dp