#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#define BUF_LEN 128
int main(int argc, char *argv[])
{
int s, n, len_in, a;
int tcnt = 0; // total count
char *escapechar = "esc\n"; /* 종료문자 */
struct sockaddr_in server_addr;
char *haddr;
char buf[BUF_LEN+1];
if (argc != 3) //입력 받는 인자가 3개여야 함
{
printf("usage: %s ip_address\n", argv[0]);
return -1;
}
haddr = argv[1];
if ((s = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
printf("can't create socket\n");
return -1;
}
/* echo 서버의 소켓주소 구조체 작성 */
bzero((char *)&server_addr, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = inet_addr(haddr);
server_addr.sin_port = htonl(atoi(argv[2])); //
/* 연결요청 */
if (connect(s, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0)
{
printf("can't connect.\n");
return -1;
}
/* 키보드 입력을 받음 */
puts("====================================================\n");
printf("야구 게임입니다^^\n");
printf("종료 하시려면 esc를 입력하세요\n");
printf("0을 제외하고 서로 다른 숫자 3개를 입력하세요\n");
puts("====================================================\n");
while(1)
{
if (fgets(buf, BUF_LEN, stdin))
{
buf[BUF_LEN] = '\0';
len_in=strlen(buf);
}
else
{
printf("fgets error\n");
return -1;
}
if(!strcmp(buf,escapechar)) break;
if (buf[0] != buf[1] && buf[0] != buf[2] && buf[1] != buf[2] && buf[0] != '0' && buf[1] != '0' && buf[2] != '0')
{
if (len_in == 4 && isdigit(buf[0]) && isdigit(buf[1]) && isdigit(buf[2]))
{
/* echo 서버로 메시지 송신 */
write(s, buf, len_in);
}
else
{
printf("\a0을 제외하고 서로 다른 숫자 3개를 입력하세요\n->");
continue;
}
}
else
{
printf("\a0을 제외하고 서로 다른 숫자 3개를 입력하세요\n->");
continue;
}
/* 수신 화면출력 */
tcnt++;
n=read(s,buf,BUF_LEN);
buf[n]=0;
if(buf[0] == 3)
{
printf("%d Strike,*congratulations^^* %d번 만에 성공하셨어요.\n", buf[0], tcnt);
break;
/* printf("다시 게임을 하시려면 1번 , 종료하시려면 2번을 눌려주세요\n->");
for(;;){
scanf("%d, &a\n");
if(a==1){
tcnt=0;
}
else if(a==2)
{
break;
}
else
{
printf("다시 입력 바랍니다.\n->");
}
}*/ // 구현이 어려워 추후 업뎃..
}
else
{
printf("%d Strike ,%d ball, %d out \n", buf[0], buf[1], buf[2]);
printf("아깝네요 ,다시 입력 바랍니다.\n->");
}
/*if(tcnt==20){
printf("종료됩니다^^빠잉뿌잉뿌잉\n ");
break;
}*/ // 서버도 close를 해줘야 한다..
}
close(s);
}