서버->클라이언트 구조체 정보 전송문제
글쓴이: dj3218 / 작성시간: 화, 2018/01/30 - 3:32오후
서버가 가진 구조체의 정보들을 클라이언트들이 들어올때마다
보내주는 코드를 만들려 하고 있으나 계속 실패만 해서 조언좀 구하려 합니다.
구조체 내용
typedef struct { int client_id; char client_ip[16]; char client_cnttime[30]; }clientinfo; clientinfo clntInfo[10];
서버 부분
while(1) { clnt_addr_size = sizeof(clnt_addr); clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size); time(&now); pthread_mutex_lock(&mutx); clnt_socks[clnt_number++]=clnt_sock; pthread_mutex_unlock(&mutx); pthread_create(&thread,NULL, clnt_connection, (void*)clnt_sock); sendInfo(); }
void sendInfo(){ int i; for(i=0;i<clnt_number;i++){ // send(serv_sock,(char*)&clntInfo,sizeof(clientinfo)*10,0); send(serv_sock,(char*)&clntInfo[i],sizeof(clientinfo),0); } }
서버에서 이렇게 실행시킴 동작에는 문제 없음 클라이언트 쪽에서 잘 받는지 미확인
클라이언트
int main(....) ......(연결시키기 위한 소켓 생성부분 필요없으니 생략) if(connect(sock,(struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) error_handling("connect() error!"); sock1=sock; clnt_info(); pthread_create(&snd_thread, NULL, send_message, (void*)sock); pthread_create(&rcv_thread, NULL, recv_message, (void*)sock); pthread_join(snd_thread, &thread_result); pthread_join(rcv_thread, &thread_result); close(sock); return 0; } void clnt_info(){ int sock = sock1; int GetSize; char suBuffer[600]; clientinfo *clntInfo; GetSize=recv(sock,suBuffer,600,0); suBuffer[GetSize]='\0'; clntInfo=(clientinfo*)suBuffer; }
클라이언트 쪽의 "clnt_info();" 주석처리하여 실행시켜보니 정상작동합니다 함수 정의 부분 또는
실행부분쪽에서 문제가 있는거 같은데 실행시키면 채팅기능이 먹통되어버립니다. 근데 원인을 모르겠습니다.
정보 공유좀 부탁드립니다..
Forums:
send(serv_sock, ...);
send(serv_sock, ...);
댓글 달기