목차
● 인터넷 소켓
● UDP, TCP 프로토콜
● TFTP 의 설명
● 순서도와 설명
● 동작화면
● 구현한 주요 함수 설명
● UDP, TCP 프로토콜
● TFTP 의 설명
● 순서도와 설명
● 동작화면
● 구현한 주요 함수 설명
본문내용
신하여 오류가 없으면 응답메세지(ACK)없이 바로 데이터를 전송함으로써 대답한다.
수신항목에 받고자 하는 파일명을 입력한다. 잘못 입력하고 수신을 누를 경우 오류가 발생했다고 메시지가 뜨게 된다.
파일명을 올바르게 입력한 후 수신을 누르면 서버로부터 수신이 이루어진다. 창을 잘보게되면 서버는 (...전송함...)이렇게 메시지가 뜨게 되고 클라이언트는 (...수신함...)이렇게 메시지가 뜨게 된다. 파일수신을 마친 클라이언트는 소켓종류 함수를 이용해 소켓을 닫는다.
● 구현한 주요 함수 설명
// 윈속을 초기화 한다.
WSADATA wsa;
if(WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
(사용할 윈속 버전을 요청함으로써 윈속 라이브러리를 초기화 하는 역할)
// socket()
m_hServerSock = socket(AF_INET, SOCK_DGRAM, 0);
if(m_hServerSock == INVALID_SOCKET)
(socket() 소켓을 생성하는 함수로 SOCK_DGRAM은 UDP를 사용한다는 의미이다.)
// bind()
memset( &servAddr, 0, sizeof(servAddr) );
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = inet_addr(strTemp);
servAddr.sin_port = htons(myDlg->GetDlgItemInt(IDC_EDIT_PORT));
(bind() 함수를 이용해서 지역 IP 주소와 지역 포트번호를 결정한다.)
// 데이터 받기
retval = recvfrom( myDlg->m_hServerSock, (char *)&recvPacket, sizeof(recvPacket), 0, (SOCKADDR *)&clientAddr, &addrLen );
(클라이언트가 보낸 데이터를 recvfrom()함수를 이용하여 받는다.)
// 데이터 보내기
sendto( myDlg->m_hServerSock, (char *)&sendPacket, packetLen, 0, (SOCKADDR *)&clientAddr, sizeof(clientAddr) );
(받은 데이터에 대한 응답을 sendto() 함수를 이용하여 보낸다.)
// closesocket();
closesocket(sock);
(데이터 전송이 끝나면 closesocket()함수를 이용하여 소켓을 닫게 된다.)
수신항목에 받고자 하는 파일명을 입력한다. 잘못 입력하고 수신을 누를 경우 오류가 발생했다고 메시지가 뜨게 된다.
파일명을 올바르게 입력한 후 수신을 누르면 서버로부터 수신이 이루어진다. 창을 잘보게되면 서버는 (...전송함...)이렇게 메시지가 뜨게 되고 클라이언트는 (...수신함...)이렇게 메시지가 뜨게 된다. 파일수신을 마친 클라이언트는 소켓종류 함수를 이용해 소켓을 닫는다.
● 구현한 주요 함수 설명
// 윈속을 초기화 한다.
WSADATA wsa;
if(WSAStartup(MAKEWORD(2, 2), &wsa) != 0)
(사용할 윈속 버전을 요청함으로써 윈속 라이브러리를 초기화 하는 역할)
// socket()
m_hServerSock = socket(AF_INET, SOCK_DGRAM, 0);
if(m_hServerSock == INVALID_SOCKET)
(socket() 소켓을 생성하는 함수로 SOCK_DGRAM은 UDP를 사용한다는 의미이다.)
// bind()
memset( &servAddr, 0, sizeof(servAddr) );
servAddr.sin_family = AF_INET;
servAddr.sin_addr.s_addr = inet_addr(strTemp);
servAddr.sin_port = htons(myDlg->GetDlgItemInt(IDC_EDIT_PORT));
(bind() 함수를 이용해서 지역 IP 주소와 지역 포트번호를 결정한다.)
// 데이터 받기
retval = recvfrom( myDlg->m_hServerSock, (char *)&recvPacket, sizeof(recvPacket), 0, (SOCKADDR *)&clientAddr, &addrLen );
(클라이언트가 보낸 데이터를 recvfrom()함수를 이용하여 받는다.)
// 데이터 보내기
sendto( myDlg->m_hServerSock, (char *)&sendPacket, packetLen, 0, (SOCKADDR *)&clientAddr, sizeof(clientAddr) );
(받은 데이터에 대한 응답을 sendto() 함수를 이용하여 보낸다.)
// closesocket();
closesocket(sock);
(데이터 전송이 끝나면 closesocket()함수를 이용하여 소켓을 닫게 된다.)