|
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);
}
|