프로젝트 자료실

linux soket client

작성자 임베디드코리아 작성일21-06-15 14:35 조회1,625회 댓글0건
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <arpa/inet.h>
#include <errno.h>
#include <unistd.h>
#include <string.h>
#define MAXBUF 1024

int main(int argc, char **argv)
{
int isock;
int client_sock;
int str_len;
char message[MAXBUF];
char sendMessage[MAXBUF];
char ch_quit;
struct sockaddr_in serv_addr;

/*서버접속을 위한 클라이언트 소켓 생성*/
isock = socket(PF_INET, SOCK_STREAM, 0);
// printf("socket() : domain = %d\n", isock);
if(isock == -1)
{
printf("socket() error");
close(isock);
return 0;
}

/*소켓에 주소 할당*/
serv_addr.sin_family = AF_INET;
// serv_addr.sin_port = htons(4030);
serv_addr.sin_port = htons(atoi(argv[1]));
// serv_addr.sin_addr.s_addr = inet_addr("211.220.225.28");
serv_addr.sin_addr.s_addr = inet_addr(argv[2]);

/*서버로 연결요청*/
if(connect(isock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1)
{
perror("connet()");
close(isock);
return 0;
}
while(1)
{
memset(sendMessage, 0, sizeof(sendMessage));
memset(message, 0, sizeof(message));
/*데이터 전송*/
printf("client send :");
scanf("%s", sendMessage);
strncpy(&ch_quit, sendMessage, 1);
if(ch_quit == 'q')
{
break;
}
send(isock, sendMessage, sizeof(sendMessage), 0);

/*데이터 수신*/
str_len = read(isock, message, sizeof(message));
// printf("read() : return = %d\n", str_len);
printf("from server : %s \n", message);
// message[str_len] = 0;
// printf("Message from server : %s \n", message);
}
/*연결 종료*/
close(isock);
return 0;
}