본문내용
주소 구조체의 내용을 memset 함수로 모두 0으로 초기화한 후에
// 각 필드에 필요한 값들을 설정한다.
// 따라서, 값이 설정되지 않은 필드는 0으로 초기화된다.
memset(&ServerAddr, 0, sizeof(ServerAddr));
ServerAddr.sin_family = AF_INET;/* 인터넷 주소 체계 설정 */
ServerAddr.sin_port = htons(port);/* 포트 번호 설정 */
prthost = gethostbyname(host);/* 호스트 이름에서 IP 주소 설정 */
memcpy(&ServerAddr.sin_addr, prthost->h_addr, prthost->h_length);
// 클라이언트의 소켓 생성
client = socket(AF_INET, SOCK_STREAM, 0);
if (client < 0)
{
printf("클라이언트 소켓 생성 실패\n");
exit(1);
}
//서버와의 연결 접속한번 연결하면 Quit을 이력하기 전까지는 연결을
//유지하기 때문에 while문에 들어가지 않고 나와있다.
if (connect (client, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr)) < 0)
{
printf("서버와 연결 실패\n");
exit(1);
}
else
//서버에 접속되면 접속되었다 표시
printf("서버와 접속되었습니다.\n");
while(1)
{
//서버에 전달할 메시지를 입력합니다.
printf("메시지를 입력하세요\n");
gets(buf);
if(strcmp(buf,"Quit")==0){
//입력한 메시지와 Quit이 같다면
//메시지를 주고 받은뒤 while문을 나간다.
send(client, buf, strlen(buf),0);
//메시지 전송
recvbyte = recv(client, buf, sizeof(buf), 0);
//서버로부터 메시지를 받는다. 리턴값은 메시지크기
if(recvbyte < 0)
{
printf(" 메시지 수신 실패\n");
exit(1);
}
buf[recvbyte] = '\0';
//맨 끝에 널값을 넣어준다.(끝을 알아보도록
printf("수신한 메시지:%s\n", buf);/* 서버로부터 수신한 메시지 출력 */
exit(-1);}
//평상시 에는 메시지를 주고받으면 된다.
// 서버에 연결되었으면, 서버에게 데이터 전송
send(client, buf, strlen(buf),0);
//서버로부터 메시지 수신
recvbyte = recv(client, buf, sizeof(buf), 0);
if(recvbyte < 0)
{
printf(" 메시지 수신 실패\n");
exit(1);
}
buf[recvbyte] = '\0';
printf("수신한 메시지:%s\n", buf);/* 서버로부터 수신한 메시지 출력 */
}
//Quit으로 인해 While문을 나오면 소켓을 닫으며 종료한다.
closesocket(client);
WSACleanup();
return 0;
}
// 각 필드에 필요한 값들을 설정한다.
// 따라서, 값이 설정되지 않은 필드는 0으로 초기화된다.
memset(&ServerAddr, 0, sizeof(ServerAddr));
ServerAddr.sin_family = AF_INET;/* 인터넷 주소 체계 설정 */
ServerAddr.sin_port = htons(port);/* 포트 번호 설정 */
prthost = gethostbyname(host);/* 호스트 이름에서 IP 주소 설정 */
memcpy(&ServerAddr.sin_addr, prthost->h_addr, prthost->h_length);
// 클라이언트의 소켓 생성
client = socket(AF_INET, SOCK_STREAM, 0);
if (client < 0)
{
printf("클라이언트 소켓 생성 실패\n");
exit(1);
}
//서버와의 연결 접속한번 연결하면 Quit을 이력하기 전까지는 연결을
//유지하기 때문에 while문에 들어가지 않고 나와있다.
if (connect (client, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr)) < 0)
{
printf("서버와 연결 실패\n");
exit(1);
}
else
//서버에 접속되면 접속되었다 표시
printf("서버와 접속되었습니다.\n");
while(1)
{
//서버에 전달할 메시지를 입력합니다.
printf("메시지를 입력하세요\n");
gets(buf);
if(strcmp(buf,"Quit")==0){
//입력한 메시지와 Quit이 같다면
//메시지를 주고 받은뒤 while문을 나간다.
send(client, buf, strlen(buf),0);
//메시지 전송
recvbyte = recv(client, buf, sizeof(buf), 0);
//서버로부터 메시지를 받는다. 리턴값은 메시지크기
if(recvbyte < 0)
{
printf(" 메시지 수신 실패\n");
exit(1);
}
buf[recvbyte] = '\0';
//맨 끝에 널값을 넣어준다.(끝을 알아보도록
printf("수신한 메시지:%s\n", buf);/* 서버로부터 수신한 메시지 출력 */
exit(-1);}
//평상시 에는 메시지를 주고받으면 된다.
// 서버에 연결되었으면, 서버에게 데이터 전송
send(client, buf, strlen(buf),0);
//서버로부터 메시지 수신
recvbyte = recv(client, buf, sizeof(buf), 0);
if(recvbyte < 0)
{
printf(" 메시지 수신 실패\n");
exit(1);
}
buf[recvbyte] = '\0';
printf("수신한 메시지:%s\n", buf);/* 서버로부터 수신한 메시지 출력 */
}
//Quit으로 인해 While문을 나오면 소켓을 닫으며 종료한다.
closesocket(client);
WSACleanup();
return 0;
}
추천자료
- 원격교육으로 이루어지는 평생교육프로그램.
- 부모교육 프로그램
- 한국 미국 일본 방송프로그램 산업의제작과 유통현황 문제점 비교
- 생활체육 및 레저프로그램의 문제점
- [인터넷방송][인터넷방송프로그램][온라인방송][인터넷방송정책]인터넷방송의 개념, 인터넷방...
- [지역방송][지역방송편성][지역방송프로그램][지역방송 경쟁력 강화 방안]지역방송의 시장구...
- [방송][방송이념][방송환경][방송산업][방송프로그램][방송정책]방송이념과 방송환경의 변화...
- [네트워크][조직][무선][컴퓨터][인터][그리드]네트워크의 의의, 네트워크의 자원, 네트워크...
- [네트워크][네트워크 운영체제][네트워크 보안][네트워크 관리시스템]네트워크의 구성요소, ...
- [정책네트워크][정책결정][정책결정과정][정책영역]정책네트워크의 개념, 정책네트워크의 유...
- 평생교육네트워크(평생학습네트워크)의 개념과 원칙, 평생교육네트워크(평생학습네트워크)의 ...
- 유비쿼터스 스포츠 센터 프로그램
소개글