32 lines
1.5 KiB
Org Mode
Executable File
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
|