본문/내용
서버에 등록된 모든 사용자에게 서버로 보내온 메세지를 뿌려주는 형태에 함수로서 메세지의 형태도 비교하며 각 사용자들에게 메세지를 보내주는 일을 하게 됩니다.
void send_message(struct sockaddr_in *enter,char *rline,int i,int s)
{
int j,length,n;
if(strstr(rline, escapechar) != NULL)
removeClient(i);
else{
n = strlen(rline);
for (j = 0; j < num_chat; j++){
length=sizeof(enter[j]);
sendto(s,rline,n,0,(struct sockaddr *)&enter[j],length);
}
}
}
enter[]에 등록된 클라이언트에 번호를 인자로 받아서 그 사용자를 없애고 한 칸씩 당기는 역할을 하게 되어 클라이언트를 없게 된다.
void removeClient(int i)
{
if(i != num_chat-1)
enter[i] = enter[num_chat-1];
num_chat--;
printf(`채팅 참가자 1명 탈퇴. 현재 참가자 수 = %d\\n`, num_chat);
}
■ 채팅 클라이언트 프로그램
채팅 클라이언트 프로그램(client.c)은 사용자의 입력 메시지를 서버로 전송하고, 서버가 보내온 모든 메시지를 사용자 화면에 출력한다. 아래는 client.c의 사용 방법이다. client가 수행되기 위해서…