Ошибка в библиотеке thread
При запуске программы выдаёт ошибку. При редактировании её не пишет. Программа принимает и отправляет сообщения по Winsock.
invoke:не найдена соответственная перегруженная функция
#include <iostream>
#include <winsock2.h>
#include <thread>
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable: 4996)
void prin(SOCKET Connection, char msg[256]) {
recv(Connection, msg, sizeof(msg), NULL);
std::cout << msg << std::endl;
}
void otpr(SOCKET Connection, char msg[256]) {
std::cin >> msg;
send(Connection, msg, sizeof(msg), NULL);
}
int main() {
setlocale(LC_ALL, "");
std::thread prinatie(prin);
WSAData wsaData;
WORD DLLVersion = MAKEWORD(2, 1);
if (WSAStartup(DLLVersion, &wsaData) != 0) {
std::cout << "Error" << std::endl;
exit(1);
}
SOCKADDR_IN addr;
int sizeofaddr = sizeof(addr);
addr.sin_addr.s_addr = inet_addr("192.168.1.45");
addr.sin_port = htons(1111);
addr.sin_family = AF_INET;
SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
listen(sListen, SOMAXCONN);
SOCKET newConnection;
newConnection = accept(sListen, (SOCKADDR*)&addr, &sizeofaddr);
if (newConnection == 0) {
std::cout << "Error #2\n";
}
else {
std::cout << "Client Connected!\n";
while (true) {
char msg[256];
prin(newConnection, msg);
otpr(newConnection, msg);
}
}
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Намекаю: std::thread prinatie(prin); — с какими параметрами должен вызвать поток функцию prin? Что он в нее должен передать?
Если бы вы передали какие-то параметры вызова, что-то вроде
SOCKET Connection;
char msg[256];
std::thread prinatie(prin,Connection,msg);
то и вопроса бы такого не было...
Только не вздумайте именно так, не думая, и написать :)
P.S. И это не ошибка в библиотеке. Это ошибка в вашей программе.