내가 봤 한 이유를 아무 생각 무효 선언되지 및 다양한 웹 사이트에서 검색 및 내 기능 중 하나에서 다음과 오류를 얻을 왜 작동하지 수변수 또는 필드 'nameOfVariable은':(
오류가 발생했습니다. : 변수 또는 필드 'ConnectClient'무효
오류를 선언 : '소켓'는 이러한 오류의
모두가 내 코드의 라인 (38)위한이 범위에서 선언되지 않았습니다 ...
void ConnectClient(Socket _newConnection)
이 질문에 대해 묻는 다른 게시물에서 알 수 있듯이 일반적으로 헤더 파일 (이 작은 테스트에서는 사용하지 않음)과 일치하지 않거나 void 함수에서 반환 형식이 있습니다. 나는 없다.
참고 : 게임 코드의 일부와 관련된 코드와 주석 처리 된 코드 스택을 제거했습니다. 이 프로그램은 윈속에 약간의 테스트가 여기
#include <iostream>
#include <winsock2.h>
using namespace std;
const int serverPort = 31337;
const int serverMaxClients = 10;
SOCKET serverSocket;
SOCKET clientSocketArray[serverMaxClients]; //should this have a -1 on it?
bool clientSlotTaken[serverMaxClients];
sockaddr clientSocketAddresses[serverMaxClients];
int FindFreePlayerSpot()
{
for (int slotIndex = 0; slotIndex < serverMaxClients; slotIndex++)
{
if (clientSlotTaken[slotIndex] == false)
{
return slotIndex;
}
}
return -1;
}
void ConnectClient(Socket _newConnection)
{
int slotIndex = FindFreePlayerSpot();
if (slotIndex == -1)
{
closesocket(_newConnection);
cout << "No player slots available, connection aborted"
}
else //Should have a connection
{
clientSocketArray[slotIndex] = _newConnection;
if (clientSocketArray[slotIndex] == INVALID_SOCKET)
{
cout << "Client Connection Error - INVALID SOCKET " << WSAGetLastError();
}
else //Client should have connected
{
cout << "Client Connected on socket slot [" << slotIndex << "] from " << "\n";
clientSlotTaken[slotIndex] = true;
}
}
}
void StartWinSock()
{
WSADATA WsaDat;
if(WSAStartup(MAKEWORD(2,2),&WsaDat)!=0)
{
std::cout<<"WSA Initialization failed!\r\n";
WSACleanup();
system("PAUSE");
}
serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(serverSocket==INVALID_SOCKET)
{
std::cout<<"Server Socket creation failed.\r\n";
WSACleanup();
system("PAUSE");
}
SOCKADDR_IN serverInf;
serverInf.sin_family=AF_INET;
serverInf.sin_addr.s_addr=INADDR_ANY;
serverInf.sin_port=htons(serverPort);
if(bind(serverSocket,(SOCKADDR*)(&serverInf),sizeof(serverInf))==SOCKET_ERROR)
{
std::cout<<"Unable to bind socket!\r\n";
WSACleanup();
system("PAUSE");
}
if(listen(serverSocket,SOMAXCONN)==SOCKET_ERROR)
{
std::cout<<"Unable to Listen!\r\n";
WSACleanup();
system("PAUSE");
}
u_long iMode=1;
ioctlsocket(serverSocket,FIONBIO,&iMode);
}
int main()
{
playerShip = new PlayerShip;
bool runningServer = true;
cout << "Starting WinSock\n";
StartWinSock();
cout << "Running on port " << serverPort << "\n";
while (true)
{
//Check for a connection
Socket newConnection = accept(serverSocket,NULL,NULL);
if (newConnection != SOCKET_ERROR)
{
cout << "Incomming connection attempt";
ConnectClient(newConnection);
}
Sleep(1);
}
WSACleanup();
return 0;
}
클래스'Socket' (대문자'S'와 소문자'ocket')은 어디에 정의되어 있습니까? –