네트워크 통신 - 텍스트 메신저
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

네트워크 통신 - 텍스트 메신저에 대한 보고서 자료입니다.

목차

1. 프로그램 개요

2. 프로그램 설명

3. 프로그램 실행화면

4. 프로그램 소스

본문내용

else if(temp == 3){
me->status = 0;
}
printf("me->status is %d\n",me->status);
if(write(s,(struct friends*)me,sizeof(struct friends)) < 0){
puts("Error : error on socket");
}
printf("send message!\n");
if(strstr(buf,EXIT_STR) != NULL){
puts("Good bye");
close(s);
exit(0);
}
}else{
printf("입력이 잘못되었습니다. 다시 확인하세요.\n");
}
// 문자열을 입력받았다고 판단
// 친구와 채팅을 하려면 친구 아이디를 입력
// 입력한 아이디가 존재하는 경우 서로
// 채팅을 가능하도록 한다.
} else if(len >= 3){
printf("문자열 입력\n");
chat = 99;
//printf("buf : %s len : %d\n",buf,strlen(buf));
for(k = 0 ; k < MAX_CLIENT ; k++){
if((clientarray[k].status != 99) && (strstr(buf,clientarray[k].name) != NULL)){
chat = k;
break;
}
}
printf("chat is : %d\n",chat);
if(chat != 99){
//올바르게 다른 클라이언트의 이름이 입력되었을때..
//서버에 현재 상태를 바꾸고..
printf("chat: %d, %s\n",chat,clientarray[chat].name);
//상태 바꾸고,채팅 원하는 상대의 이름을 보낸다.
me->status = 3;
sprintf(me->name,"%s",buf);
sprintf(me->port,"%s","7000");
if(write(s,(struct friends*)me,sizeof(struct friends)) < 0){
puts("Error : Write error on socket");
}
//자식프로세스 생성 udp 서버가 된다.
if((pid = fork()) == 0){
if(execl("./udpser","udpser",me->port,(char *)0) < 0)
printf("exec error\n");
}
//부모 프로세스는 자식프로세스가 종료할때까지 기다린다.
else{
if(pid == wait()){
me->status = 1;
printf("argv[3] : %s\n",argv[3]);
sprintf(me->name,"%s",argv[3]);
printf("before parent write\n");
if(write(s,(struct friends*)me,sizeof(struct friends)) < 0){
puts("Error : Write error on socket");
}
printf("after parent write\n");
}
}
}else{
printf("입력이 잘못되었습니다. 다시 확인하세요.\n");
}
}
}
}
}
free(me);
return 0;
}
//서버와 연결해주는 함수 : 반환값 소켓 번호
int tcp_connect(int af, char *servip, unsigned short port){
struct sockaddr_in servaddr;
int s;
if((s = socket(af,SOCK_STREAM,0)) < 0)
return -1;
bzero((char *)&servaddr,sizeof(servaddr));
servaddr.sin_family = af;
inet_pton(AF_INET,servip,&servaddr.sin_addr);
servaddr.sin_port = htons(port);
if(connect(s, (struct sockaddr *)&servaddr, sizeof(servaddr)) < 0)
return -1;
return s;
}
//client_arrya값을 화면에 출력(테스트용)
void check_clientarray(struct friends *array){
int i;
for(i = 0 ; i < MAX_CLIENT ; i++)
printf("client_array[%d] name: %s status : %d\n",i,array[i].name,array[i].status);
}
//내용을 출력할 함수
void print_msg(struct friends *me,struct friends *array){
int i;
if(me->status == 1){
printf("현재 내 상태는 - 온라인\n");
}else if(me->status == 2){
printf("현재 내 상태는 - 자리비움\n");
}else if(me->status == 0){
printf("현재 내 상태는 - 오프라인\n");
}else if(me->status == 3){
printf("현재 내 상태는 - 채팅중\n");
}else{
printf("error!!\n");
}
printf("------My friends list------\n");
for(i = 0 ; i < MAX_CLIENT-1 ; i++){
if(array[i].status != 99 && strcmp(me->name,array[i].name) != 0){
if(array[i].status == 1){
printf("%s 는- 온라인 ip: %s\n",array[i].name,array[i].ip);
}else if(array[i].status == 2){
printf("%s 는- 자리비움 ip: %s\n",array[i].name,array[i].ip);
}else if(array[i].status == 0){
printf("%s 는- 오프라인 ip: %s\n",array[i].name,array[i].ip);
}else if(array[i].status == 3){
printf("%s 는- 채팅중 ip: %s\n",array[i].name,array[i].ip);
}
}
}
printf("--------------------------\n");
return;
}

키워드

  • 가격2,500
  • 페이지수16페이지
  • 등록일2005.09.29
  • 저작시기2005.09
  • 파일형식한글(hwp)
  • 자료번호#314064
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니