리눅스에서 소켓,쓰레드를 이용한 채팅, 귓속말 다중채팅 구현
- 최초 등록일
- 2011.06.01
- 최종 저작일
- 2010.06
- 8페이지/ 압축파일
- 가격 2,000원
소개글
1. 사용자 닉네임 설정
2. 귓속말 기능
3. 클라이언트는 쓰레드를 사용하여 메세지 전달과 입력을 동시에 처리한다.
1. 각 클라이언트의 최초 접속시 서버는 클라이언트의 닉네임을 요구한다.
2. 클라이언트는 자신이 사용할 닉네임을 서버로 전송한다.
3. 서버는 클라이언트의 닉네임, 소켓의fd, ip등의 정보를 리스트에 추가한다
4. 클라이언트가 /귓속말 닉네임 메세지 형식으로 메세지를 전송하면 서버는 메세지를 해당 닉네임을 사용하는 클라이언트에게만 전송한다.
목차
1.과제
2.소스 및 설명, 주석
3. 결과화면
4. 고찰
본문내용
1. 과제 내용
강의자료 다중채팅프로그램에 기능 추가
1. 사용자 닉네임 설정
2. 귓속말 기능
3. 클라이언트는 쓰레드를 사용하여 메세지 전달과 입력을 동시에 처리한다.
2. 소스 & 설명
(1) 서버#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <fcntl.h>
#include <sys/file.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define MAXLINE 511
#define MAX_SOCK 50
char* EXIT_STRING = "exit" // 종료 요청 문자열
char* START_STRING = "Conneted to char_servern"//클라이언트 환영 메세지
int maxfdp1; // 최대 소켓 번호 +1
int num_chat = 0; // 채팅 참가자 수
int clisock_list[MAX_SOCK];// 채팅에 참가자 소켓번호 목록
int listen_sock; // 서버의 리슨 소켓
// 새로운 채팅 참가자 처리
void addClient(int s, struct sockaddr_in* newcliaddr);
int getmax(); // 최대 소켓 번호 찾기
void removeClient(int s); // 채팅 탈퇴 처리 함수
int tcp_listen(int host, int port, int backlog);
// 소켓 생성 및 listen
void errquit(char *mesg) { perror(mesg); exit(1);}
typedef struct user { // 유저의 데이터 구조체
int sock;
char nickname[50];
} data;
data userdata[MAX_SOCK];
int main(int argc , char* argv[]) {
struct sockaddr_in cliaddr;
char buf[MAXLINE+1];
int i,j,nbyte, accp_sock;
int addrlen = sizeof(struct sockaddr_in);
fd_set read_fds; // 읽기를 감지할 fd_set 구조체
char nickname[50];
..
....
.....
참고 자료
없음
압축파일 내 파일목록
server
server.c
client
client.c
보고서.hwp