Essays.club - Получите бесплатные рефераты, курсовые работы и научные статьи
Поиск

Создание последовательного сервера с установлением логического соединения TCP

Автор:   •  Ноябрь 21, 2023  •  Лабораторная работа  •  1,815 Слов (8 Страниц)  •  105 Просмотры

Страница 1 из 8

Создание последовательного сервера с установлением логического соединения TCP

Цель работы: изучить методы создания серверов с установлением логического соединения TCP, используя алгоритм последовательной обработки запросов.

Индивидуальное задание:

Серверная часть:

//СЕРВЕР

#include "stdafx.h"

#include<iostream>

#include<winsock2.h>

#include<string>

#include<stdio.h>

#pragma comment(lib, "Ws2_32.lib");

using namespace std;

int main() {

WORD sockVer;

WSADATA wsaData;

int retVal;

sockVer = MAKEWORD(2, 2);

WSAStartup(sockVer, &wsaData);//функция для использования интерфейса WinSock

//Создаем сокет

SOCKET servSock = socket(AF_INET, SOCK_STREAM, 0);

if (servSock == INVALID_SOCKET) {

cout<<"Unable to create socket\n";

getchar();

WSACleanup();

return SOCKET_ERROR;

}

struct sockaddr_in local;

local.sin_family = AF_INET;

local.sin_port = htons(1280);

local.sin_addr.s_addr = INADDR_ANY;

retVal = bind(servSock, (struct sockaddr*)&local, sizeof(local));//связывание сокета с адресом

if (retVal == SOCKET_ERROR) {

cout << "Unable to bind\n";

WSACleanup();

return SOCKET_ERROR;

}

//Пытаемся начать слушать сокет

retVal = listen(servSock, 5);

if (retVal == SOCKET_ERROR) {

printf("Unable to listen\n");

WSACleanup();

return SOCKET_ERROR;

}

//Ждем клиента

SOCKET clientSock;

clientSock = accept(servSock, NULL, NULL);//открытие соединения

if (clientSock == INVALID_SOCKET) {

printf("Unable to accept\n");

WSACleanup();

return SOCKET_ERROR;

}

while (true) {

char buf[255] = "";

retVal = recv(clientSock, buf, 255, 0);//прием данных

if (retVal == SOCKET_ERROR) {

printf("Unable to recv\n");

return SOCKET_ERROR;

}

std::string cl = buf;

size_t found = cl.find_first_of(" ");

char buffer[50];

int nums[50], p = 0;

while (found != std::string::npos) {

found = cl.find_first_of(" ", 0);

std::size_t length = cl.copy(buffer, found, 0);

cl.erase(0, found + 1);

nums[p++] = std::stoi(buffer);

}

int c = 0;

...

Доступно только на Essays.club