#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

#include <sys/socket.h>


#define BUF_SIZE 1024

#define OPSZ 4

#define RLT_SIZE 4


void error_handling(char *message);


int main(int argc, char* argv[])

{

int sock;

int sock_r;

char opmsg[BUF_SIZE];

int opnd_cnt, i,a;

int total=0;

int up,down,hit;

int result[BUF_SIZE];

char try="";

up = 0;

down =0;

hit =0;

struct sockaddr_in serv_addr;

if(argc!=3){

          printf("Usage : %s <IP> <port>\n", argv[0]);

          exit(1);

}

sock=socket(PF_INET, SOCK_STREAM, 0);


if(sock == -1)

error_handling("socket() error");

memset(&serv_addr, 0, sizeof(serv_addr));

serv_addr.sin_family=AF_INET;

serv_addr.sin_addr.s_addr=inet_addr(argv[1]);

serv_addr.sin_port=htons(atoi(argv[2]));


if(connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))==-1) 

error_handling("connect() error!");


printf("Welcome!");


while(a=1){

fputs("\nof your answers?: ", stdout);

scanf("%d", &opnd_cnt);

total += opnd_cnt;

opmsg[0]=(char)opnd_cnt;


for(i=0; i<opnd_cnt; i++) {

printf("Answer%d: ", i+1);

scanf("%d", (int*)&opmsg[i*OPSZ+1]);

}

fgetc(stdin);

write(sock, opmsg, opnd_cnt*OPSZ+2);

read(sock, &result[0], BUF_SIZE);

read(sock, &result[2], BUF_SIZE);

read(sock, &result[1], BUF_SIZE);

read(sock, &result[3], BUF_SIZE);

printf("\n[Replay from Server]");

printf("\n UP: %d, DOWN: %d, HIT: %d\n",result[0],result[1],result[2]);

if(result[2]>0){

printf("You've got the right answer: %d\n",result[3]);

printf("Your score is 100/%d",total);

printf("Try again? (y/n):");

scanf("%c", try);

if(try=="y"||try=="Y"){

a=0;

}

else if(try=="n"||try=="N"){

a=1;

}

}

close(sock);

return 0;

}

}

void error_handling(char *message)

{

fputs(message, stderr);

fputc('\n', stderr);

exit(1);

}



소켓프로그래밍으로 코드 짰는데 뭐가 잘못된지 모르겠어요 알려줘용

서버쪽은 오류가 나질 않는데 클라이언트 쪽에서만 오류가 나네요 ㅜㅜ