Создание основной функции простого сервера, используемой

А, сокет ()
заголовок: #include <SYS / socket.h>
Прототип функция: INT сокет (интермедиат домен, Int типа, Int протокол);
действия: создание сокета.

домен Параметры: Указывает на адрес , какой тип использования. По умолчанию AF_INET.
ЭГ:
AF_INET IPv4 - сети связи
AF_INET6 IPv6 сети связи
AF_PACKET канального уровня связи
AF_UNIX, AF_LOCAL локальная связь

Параметры типа: тип сокета. По умолчанию SOCK_STREAM.
Е.:
.. 1, SOCK_STREAM обеспечивает непрерывный и надежный двусторонний поток данных, то есть, TCP механизм поддерживает OOB, должны быть использованы , прежде чем все данные передачи подключения () , чтобы установить состояние соединения
2, SOCK_DGRAM прерывистую пакет ненадежного соединения, UDP на основе
3, SOCK_SEQPACKET обеспечивая непрерывный надежное соединение пакета
4, оригинальный сетевой протокол SOCK_RAW обеспечивает доступ
5, SOCK_R обеспечивают надежное соединение пакетной передачи данных
6, SOCK_PACKET обеспечивают прямые драйвера связи и сети. протокол используются для указания сокета номер транспортного протокола, как правило , не игнорируйте эту ссылку, может быть установлен на 0

Протокол Параметры: номер протокола. Он может быть установлен в 0, что указывает на выбор текущего семейства протоколов и тип системы по умолчанию комбинированный
ЭГ:
IPPROTO_TCP идут IPPTOTO_UDP IPPROTO_SCTP IPPROTO_TIPCTCP
протокол TCP транспортного UDP транспортный протокол STCP транспортный протокол транспортного протокола TIPC

 

Во- вторых, привязка ()
заголовок: #include <SYS / socket.h>
Прототип функции: INT привязывать (интермедиат sockfd, Const структура SOCKADDR * адр, socklen_t addrlen);
действие: адрес , присвоенный конкретному розеткой адрес семьи.

Параметры sockfd: дескриптор сокета, который есть, с помощью функции сокета () создает однозначно идентифицировать сокет. Bind () функция, чтобы дать слово, чтобы описать связывание имени.

Параметры адр: константная структура SOCKADDR * указатель на привязку к адресу протокола sockfd. Структура адреса в зависимости от того, когда адреса сокета созданных на протокол ванной адресов отличается.
IPV4:
структура in_addr

{

uint32_t s_addr; / * 32 бит адреса IPv4 * /
};

STRUCT в sockaddr_in
{
sa_family_t sin_family; / * // семейство адресов * /

in_port_t sin_port; / * 16 бит TCP / UDP номер порта * /
структура in_addr sin_addr; / * 32-битный IP - адрес * /

};


Параметры addrlen: длина структуры адреса.

 


三,listen()
头文件:#include<sys/socket.h>
函数原型:int listen(int sockfd, int backlog);
作用:如果作为一个服务器,在调用socket()、bind()之后就会调用listen()来监听这个socket,如果客户端这时调用connect()发出连接请求,服务器端就会接收到这个请求。

参数sockfd:即为要监听的socket描述字

参数backlog:相应socket可以排队的最大连接个数。

 

四,connect()
头文件:#include<sys/socket.h>
函数原型:int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
作用:将套接字连接到目的地址,客户端通过调用connect函数来建立与TCP服务器的连接。

参数sockfd:为客户端的socket描述字

参数addr:为服务器的socket地址

参数addrlen:为socket地址的长度

 

五,accept()
头文件:#include<sys/socket.h>
函数原型:int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); //返回连接connect_fd
作用:TCP服务器端依次调用socket()、bind()、listen()之后,就会监听指定的socket地址了。TCP客户端依次调用socket()、connect()之后就向TCP服务器发送了一个连接请求。TCP服务器监听到这个请求之后,就会调用accept()函数取接收请求,这样连接就建立好了。之后就可以开始网络I/O操作了,即类同于普通文件的读写I/O操作。
关键点
*accept()会创建一个新的socket,并且正是这个新的socket会与执行connect()的对象socket进行连接。
返回值:accept()的返回结果是已经连接的socket文件描述符


六,close()
头文件:#include <unistd.h>
函数原型:int close(int fd);
作用:在服务器与客户端建立连接之后,会进行一些读写操作,完成了读写操作就要关闭相应的socket描述字

рекомендация

отwww.cnblogs.com/yxbl/p/12078538.html
рекомендация