|
clientSocket = accept(serverSocket,(sockaddr *)&clientAddress,&clientAddress_size);
이전에 clientAddress_size = sizeof(clientAddress);
이렇게 클라이언트 Address의 크기를 입력을 받고
sockaddr이 아닌 SOCKADDR로 고치면 되더군요~
즐프하세요~
일월영측 님이 쓰신 글 :
: WSADATA wsadata;
: SOCKADDR_IN clientAddress;
: int clientAddress_size;
: int clientSocket;
: SOCKET serverSocket;
: WSAStartup(MAKEWORD(2,2),&wsadata);
: // 클라이언트의 접속을 기다리는 서버 소켓의 생성
: serverSocket = socket(AF_INET, SOCK_STREAM, 0);
: //서버의 주소를 저장하는 구조체 serverAddress 생성
: SOCKADDR_IN serverAddress;
: ZeroMemory(&serverAddress,sizeof(serverAddress));
: // serverAddress에 현재 IP 대입
: serverAddress.sin_addr.s_addr = htonl(INADDR_ANY);
: // 주소 타입
: serverAddress.sin_family = AF_INET;
: // 클라이언트와 메시지를 주고 받을 포트 번호
: serverAddress.sin_port = htons(PORT);
: //서버 소켓에 주소 정보 설정
: bind(serverSocket, (sockaddr *)&serverAddress, sizeof(serverAddress));
: //클라이언트의 접속을 기다리는 대기 모드로 전환
: listen(serverSocket, 5);
: while(1)
: {
: // clientSocket = accept(serverSocket,(sockaddr *)&clientAddress,&clientAddress_size);
: //d위와 같이 선언 하게 되면 클라이언트의 IP를 얻어올 수 있었는데 프로그램을 약간 수정을 하니
: // 클라이언트의 IP주소를 못 얻어오고, 위와 같이 선언하면 패킷을 받지 못하더군요..
: // 아래 방법으로 하면 패킷을 전송 받아 실행은 되지만, IP 주소를 알수가 없는데
: // IP를 전송 받을 수 있는 방법이 없을까요???
: clientSocket = accept(serverSocket,NULL, NULL);
: if(clientSocket != -1)
: {
: int strlen = recv(clientSocket,fromClient,MAX_SIZE,0);
: send(clientSocket,fromClient,strlen,0);
: }
|