• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Передача структуры с помощью соккетов

  • Автор темы Chetverg
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

Chetverg

У меня есть такая структура:

struct game{ bool free;
player player_a;
player player_b;
pole pmass[10][10];
int hod;
};

Как мне её передать с помощью функции SendStream() соккета... или ещё как нибудь.
И как потом на сервере её прочитать.

Спасибо
 
B

Barmutik

Записывайте в стрим и передавайте а на сервере соответственно читайте из стрима ... что вызывает проблемы ?
 
T

test

общая структура
typedef struct File_Info{ // file information structure
DWORD dwFileAttributes; // DWORD dwFileAttributes file
FILETIME ftCreationTime; //
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
char strDirPath[MAX_PATH];
char strFNameORDir[MAX_PATH];
DWORD dwDir; // 0 - directory 1 - file 2 - close connection
int iCountFile;
__int64 i64TimeFile;
File_Info(): dwFileAttributes(0), nFileSizeHigh(0), nFileSizeLow(0),
dwDir(0), iCountFile(0), i64TimeFile(0)
{
::ZeroMemory(strDirPath, CELEMS(strDirPath));
::ZeroMemory(strFNameORDir, CELEMS(strFNameORDir));
};


сервер получает структуру
rv = recv (ClientSock, (char*)&lpFileInfo, sizeof (file_info), 0);
if (rv == SOCKET_ERROR)
{
switch(WSAGetLastError())
{
case(WSAECONNRESET):
LogFunc(lpdialog_info, _T("UserProcess"), _T("ECONNRESET"), _T("Connection Reset, Listening for a New Client..."));
closesocket (ClientSock);
return(0);
default: ErrorStop();
}
}
else if ( rv == 0 )
{
LogFunc(lpdialog_info, _T("UserProcess"), _T("rv = 0"), _T("Zero data \n Connection Reset, Listening for a New Client..."));
closesocket (ClientSock);
return(0);
}

} *CFILE_INFO, file_info;

клиент отправляет
if (send (ServerSock, (char*)lpFileInfo, sizeof(file_info), 0)
== SOCKET_ERROR)
{
closesocket (ServerSock);
ErrorStop();
return _T("");
}
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!