Создание приложения сервера-клиента с помощью C Socket.
Клонировать проект и компакт -диск в главном каталоге.
Откройте терминал и настройте свой сервер следующей командой:
./server [port]Вы должны получить такой результат, как это:
Listening on 0.0.0.0:8080После этого подключитесь к серверу с вашим клиентом, используя эту команду:
./client [IP] [port]Программирование сокетов - это способ подключения двух узлов в сети для общения друг с другом. Один розетка (узел) прослушивает конкретный порт на IP, в то время как другой розет обращается к другому, чтобы сформировать соединение. Сервер формирует сокет слушателя, пока клиент обращается к серверу.
int sockfd = socket ( domain , type , protocol ) int bind ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );После создания сокета функция связывания связывает сокет с адресом и номером порта, указанным в ADDR (пользовательская структура данных). В примере кода мы связываем сервер с LocalHost, поэтому мы используем inaddr_ony для указания IP -адреса.
int listen ( int sockfd , int backlog );Он помещает сокет сервера в пассивный режим, где он ждет, пока клиент обратится к серверу, чтобы создать соединение. Отставление определяет максимальную длину, до которой может расти очередь ожидающих соединений для SockFD. Если запрос на соединение прибывает, когда очередь заполнена, клиент может получить ошибку с указанием Econnrefused.
int new_socket = accept ( int sockfd , struct sockaddr * addr , socklen_t * addrlen );Он извлекает первый запрос на подключение в очередь ожидающих подключений для прослушивания, Sockfd, создает новый подключенный гнездо и возвращает новый дескриптор файла, относящийся к этому сокету. На этом этапе соединение устанавливается между клиентом и сервером, и они готовы к передаче данных.
int connect ( int sockfd , const struct sockaddr * addr , socklen_t addrlen );Системный вызов Connect () подключает сокет, упомянутый дескриптором файла Sockfd к адресу, указанному Addr. Адрес и порт сервера указан в Addr.
pthread_t thread_id ;
pthread_create ( & thread_id , NULL , client_handler , ( void * ) & client_socket );Использование Pthread для создания потока для каждого из наших клиентов и обработки их с помощью конкретного метода.