powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / LPVOID
8 сообщений из 8, страница 1 из 1
LPVOID
    #33669767
sever221mar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребята, помогите, разъясните.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
DWORD WINAPI Func(LPVOID sock)
{
	SOCKET s = (SOCKET)sock;
	
	char* buff = new char[ 10 ];
	
	// Получаем данные от клиента
	recv(s,buff, 10 , 0 );
	cout<<buff<<endl;
	cout<<"============================"<<endl;
	
	// отправим клиенту ответ	

	char* str = "OK";
	
	send(s,str,(int)(strlen(str)+ 1 ), 0 );
	
	// Закрываем существующий сокет
	closesocket(s);

	return  0 ;
}

int _tmain(int argc, _TCHAR* argv[])
{
	
	// Код инициализации сокета и режим прослушки	
	
	sockaddr_in n_addr;
	int d_size = sizeof(n_addr);

	// Создаем новый сокет
	SOCKET n_sock;
			
	do
	{
		// извлекаем из очереди запрос (разрешена попытка связи)
		n_sock = accept(sock,(sockaddr*)&n_addr,&d_size);
				
		if (n_sock == INVALID_SOCKET)
		{
			break;
		}
				
				
		// Функция обмена в новый поток
		HANDLE t = CreateThread(NULL, 0 ,(LPTHREAD_START_ROUTINE)Func,(LPVOID)n_sock, 0 , 0 );
		
		
	}
	while (true);

		
	getch();
	
	// Завершаем использование WS2_32.DLL
	WSACleanup();
	return  0 ;
}

Объясните, как (LPVOID)n_sock передается в функцию потока и что именно передается. Когда пытаюсь передать (LPVOID)&n_sock - ошибка в одновременной обработке нескольких потоков, т.к. обращение к одной и той же области памяти. А так все нормально, но непонимаю, что передается!!!
...
Рейтинг: 0 / 0
LPVOID
    #33669774
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахрен это уродство - LPVOID? Венгерскую нотацию - ф топку. Используй void*, так понятней.
...
Рейтинг: 0 / 0
LPVOID
    #33669777
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще - SOCKET это видимо четырехбайтовое значение, ты его конвертируешь в void* который тоже четырехбайтовый и передешь в поток. В потоке конвертируешь void* обратно в SOCKET. Получается своеобразная передача по значению, а не по ссылке.
...
Рейтинг: 0 / 0
LPVOID
    #33669801
sever221mar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей ИльичА вообще - SOCKET это видимо четырехбайтовое значение, ты его конвертируешь в void* который тоже четырехбайтовый и передешь в поток. В потоке конвертируешь void* обратно в SOCKET. Получается своеобразная передача по значению, а не по ссылке.

Спасибо, как теперь таким же способом передать в поток структуру!!!
...
Рейтинг: 0 / 0
LPVOID
    #33669851
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sever221mar Сергей ИльичА вообще - SOCKET это видимо четырехбайтовое значение, ты его конвертируешь в void* который тоже четырехбайтовый и передешь в поток. В потоке конвертируешь void* обратно в SOCKET. Получается своеобразная передача по значению, а не по ссылке.

Спасибо, как теперь таким же способом передать в поток структуру!!!
Создать структуру в куче, передать через параметр потока (void*) и в потоке ее удалить из кучи, когда будет не нужна.
...
Рейтинг: 0 / 0
LPVOID
    #33669955
=Ozzy=
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вокруг этого столько разговоров? :)
Непонимаю чем вам венгерская нотация не нравиться?
...
Рейтинг: 0 / 0
LPVOID
    #33669962
Фотография Сергей Ильич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому шта у венграф была Трансильвания, они топтали нашу родину вместе с Гитлеровскими оккупантами и вообще они му**ки.
...
Рейтинг: 0 / 0
LPVOID
    #33671921
sever221mar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Ильич sever221mar Сергей ИльичА вообще - SOCKET это видимо четырехбайтовое значение, ты его конвертируешь в void* который тоже четырехбайтовый и передешь в поток. В потоке конвертируешь void* обратно в SOCKET. Получается своеобразная передача по значению, а не по ссылке.

Спасибо, как теперь таким же способом передать в поток структуру!!!
Создать структуру в куче, передать через параметр потока (void*) и в потоке ее удалить из кучи, когда будет не нужна.

Спасибо большое за помощь, а венгра Windows оставте все-таки в покое. Спасибо!!!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / LPVOID
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]