//SERVER


#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/socket.h>

#include <sys/stat.h>

#include <arpa/inet.h>


#define MAXBUF 256

#define EQ ==


int main()

{

        int ssock, csock;  // 소켓 스크립트 정의

        int clen; 

        struct sockaddr_in client_addr, server_addr;  // 주소 구조체

        char buf[MAXBUF] = "i like you!!! "; // 클라이언트에 보내줄 문자

 

 

// 서버 소켓 생성

        if((ssock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0 ){

                perror("socket error :");

                exit(1);

        }


        clen = sizeof(client_addr);

 

// 주소 구조체에 주소 지정

        memset(&server_addr, 0, sizeof(server_addr));

        server_addr.sin_family = AF_INET;

        server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

        server_addr.sin_port = htons(3317);

// 사용할 포트로 3317번 포트 사용


//bind() 사용해서 서버소켓의 주소 설정

        if (bind(ssock, (struct sockaddr *)&server_addr, sizeof(server_addr))<0){

                perror("bind error: ");

                exit(1);

        }

 

//위에서 지정한 주소로 크라이언트 접속을 기다림

        if(listen(ssock, 8) < 0){

                perror("listen error : ");

                exit(1);

        }

        while(1){

// 클라이언트가 접속하면 접속을 허용하고 , 클라이언트 소켓을 생성

                csock = accept(ssock, (struct sockaddr*)&client_addr, &clen);

 

//클라이언트로 buf에 있는 문자열 발송

                if(write(csock, buf, MAXBUF)<=0)

                        perror("write error: ");

 

// 클라이언트 소켓을 닫음

                close(csock);

        }


return 0;

}

 

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/socket.h>

#include <sys/stat.h>

#include <arpa/inet.h>


#define MAXBUF 256

#define EQ ==


int main()

{


        int ssock;

        int clen;

//소켓 생성

        struct sockaddr_in server_addr;

        char buf[MAXBUF];


        if((ssock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) <0){

                perror("socket error : ");

                exit(1);

        }


        clen = sizeof(server_addr);

//소켓에 접속할 주소 지정

        memset(&server_addr, 0, sizeof(server_addr));

        server_addr.sin_family = AF_INET;

        server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

        server_addr.sin_port = htons(3317);

// 지정한 주소로 접속

        if(connect(ssock, (struct sockaddr *)&server_addr, clen)<0){

                perror("connect error : ");

                exit(1);

        }


        memset(buf, 0, MAXBUF);

//서버에서 전송하는 문자열을 받음

        if(read(ssock, buf, MAXBUF) <= 0){

                perror("read error : ");

                exit(1);

        }

// 소켓 닫음

         close(ssock);

// 받아온 문자열 출력

        printf("\nread : %s\n\n", buf);



        return 0;

}


AND