/* TCP Echo Client */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include "practical.h"
int main (int argc, char *argv[])
{
/* 명령 파라미터의 개수가 3 or 4인지 검사 */
if (argc<2 || argc>3)
{
printf ("Usage : %s <Server Address> [<Server Port>]\n", argv[0]);
exit (1);
}
char *servIP = argv[1];
in_port_t servPort = (argc == 3) ? atoi (argv[2]) : 7 ;
/* socket() : TCP 소켓 생성 */
int sock = socket (PF_INET, SOCK_STREAM, 0);
if (sock == -1)
error_handling ("socket() error");
/* connect() : 서버 접속 */
struct sockaddr_in serv_addr;
memset (&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr (servIP);
serv_addr.sin_port = htons (servPort);
if (connect (sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1)
error_handling ("connect() error");
printf(" ##################### 1 : 1 채팅이 시작 되었습니다. ##################\n");
printf(" ########## 종료를 원할 경우 /quit 입력 하세요 ###########\n");
while(1)
{
/* 입력 받을 버퍼 생성 */
char message[BUFSIZE];
memset(message,0,strlen(message));
/* 사용자로부터 입력 받음 */
printf("Client : ");
fgets(message,BUFSIZE,stdin);
/* 입력 받은 문자 센드 */
size_t echoStringLen = strlen(message);
ssize_t numBytes = send (sock,message, echoStringLen, 0);
if (numBytes == -1)
error_handling ("send() error");
/* 입력 받은 문자가 /quit 일 경우 브레이크 */
if(strcmp(message,"/quit\n") == 0)
break;
/* 서버측으로부터 리시브 */
char buffer[BUFSIZE];
memset(buffer,0,sizeof(buffer));
numBytes = recv(sock,buffer,BUFSIZE,0);
if(numBytes == -1 )
error_handling(" recv() error ");
if(strcmp(buffer,"/quit\n") == 0)
break;
printf("from %s : %s ",inet_ntoa(serv_addr.sin_addr),buffer);
memset(buffer,0,sizeof(buffer));
}
/* close() : 소켓 종료 */
fputc('\n',stdout);
printf(" ############# 1 : 1 채팅이 종료 되었습니다. #############\n");
close (sock);
return 0;
}
'C 프로젝트 > C 프로젝트' 카테고리의 다른 글
Socket Programin in C , 2번째 !! Simple FTP ( Client) (0) | 2012.12.18 |
---|---|
Socket Programin in C , 2번째 !! Simple FTP ( server ) (0) | 2012.12.18 |
소켓 프로그래밍 첫번째 ! 1:1 채팅 프로그램 (서버 ) (0) | 2012.12.18 |