함수가 있습니다. createServerSocket()입니다. 이 함수는 소켓을 만들기 위해 여러 스레드에서 액세스 할 수 있습니다.함수의 SOCKADDR_IN 및 SOCKET에 대한 포인터 전달
나는 *를 sockaddr_in * 특정 포트 번호createrServerSocket() 기능에 각 스레드는 고유 소켓을 가질 수 있도록, 각 스레드는 세 개의 인수하는 socketIdentifier를 전달하려는. 이를 위해
, 내가 포인터로 socketIdentifier, *를 sockaddr_in * 특정 포트 번호 createrServerSocket() 함수를 통과하고 socketIdentifier 있도록하고 accessable 한 내부 스레드 수 있어야 생성 된 소켓. 여기VOID createServerSocket(SOCKADDR_IN *socket, SOCKET *socketIdentifier, int PORT)
{
//Socket Binding//
WSADATA wsa;
//Initialise winsock//
if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
{
exit(EXIT_FAILURE);
}
//Create a socket//
if((*socketIdentifier = socket(AF_INET , SOCK_DGRAM , 0)) == INVALID_SOCKET)
{
MessageBox(NULL,
"Socket not Created",
"Failure :(",
MB_ICONINFORMATION);
exit(EXIT_FAILURE);
}
//Socket Created//
//Prepare the sockaddr_in structure//
*socket.sin_family = AF_INET;
*socket.sin_addr.s_addr = INADDR_ANY;
*socket.sin_port = htons(PORT);
//Bind//
if(bind(socketIdentifier ,(struct sockaddr *)&socket , sizeof(socket)) == SOCKET_ERROR)
{
MessageBox(NULL,
"Bind Failed",
"Failure :(",
MB_ICONINFORMATION);
exit(EXIT_FAILURE);
}
//Else Bind Done//
MessageBox(NULL,
"Bind Done",
"SUCCESS :)",
MB_ICONINFORMATION);
}
가 호출하는 함수입니다 : 아래
내 코드입니다
DWORD WINAPI threadProc(LPVOID param)
{
SOCKADDR_IN socket;
SOCKET socketIdentifier;
createServerSocket(*socket,*socketIdentifier,8888); //Create a socket with a socketIdentifier and bind()ed to PORT#8888.
//Do something at this socket
Return TRUE;
}
이 내가 얻을 오류는 다음과 같습니다
error C2064: term does not evaluate to a function taking 3 arguments
error C2228: left of '.sin_family' must have class/struct/union error C2228: left of '.sin_addr' must have class/struct/union
error C2228: left of '.S_un' must have class/struct/union
error C2228: left of '.S_addr' must have class/struct/union error C2228: left of '.sin_port' must have class/struct/union
error C2070: ''unknown-type'': illegal sizeof operand
라인 : if ((* socketIdentifier = socket (AF_INET, SO CK_DGRAM, 0)) == INVALID_SOCKET)
오류 : 오류 C2064 : 용어는 3 개 인수을 복용 함수에 평가하지 않습니다
정말 고마워요. 문제의 모든 나머지는 라인을 제외 해결된다 : 만약 ((* socketIdentifier = 소켓 (AF_INET, SOCK_DGRAM, 0)) == INVALID_SOCKET) 오류 : 오류 C2064가 : 기간이 3 개 인수를 – Ayse
복용 함수에 평가하지 않습니다 @ AyeshaHassan 이미'socket'이라는 지역 변수 (인자)를 가지고 있기 때문입니다. 변수 이름을 바꾸면 함수를 호출 할 수 있습니다. –
정말 고마워요. 문제 해결됨 :) – Ayse