본문 바로가기

Ethernet Chat Server

(10)
채팅 프로그램, 링버퍼 종료 코드 추가(최종) 안녕하세요. Edward입니다.최종 채팅 프로그램 소스입니다.저번 Source Code에 비해 추가된 점은 Disconnect입니다. TCP에서 Server와 client와 연결을 끊는 것은 이론적으로 4-Handshake way 라고 칭합니다.그림의 4 way handshake 는 아래와 같은 방법으로 이루어진다. 최초에는 서로 통신 상태이기 때문에 양쪽이 ESTABLISHED 상태이다.1. 통신을 종료하고자 하는 Client가 서버에게 FIN 패킷을 보내고 자신은 FIN_WAIT_1 상태로 대기한다.2. FIN 패킷을 받은 서버는 해당 포트를 CLOSE_WAIT으로 바꾸고 잘 받았다는 ACK 를 Client에게 전하고 ACK를 받은 Client는 상태를 FIN_WAIT_2로 변경한다. 그와 동시에 S..
채팅 프로그램, 링버퍼 오류 수정 Edward입니다.링버퍼의 Debugging을 한 결과.. finder에서 Empty상태를 안만들어줘서 안되는 것으로 판명되었습니다.아래의 수정된 코드를 보시면 이해가 빠르실거라 생각됩니다.[code language="c"] /* =============================================================================== Name : W5500-EVB.c Author : $(author) Version : Copyright : $(copyright) Description : main definition =============================================================================== */ #if..
채팅 프로그램 링버퍼 코드 추가 안녕하세요. Edward입니다.저번 링버퍼 설명에 추가하여 링버퍼 구현 코드를 올리겠습니다.코드는 아래와 같습니다.[code language="c"] /* =============================================================================== Name : W5500-EVB.c Author : $(author) Version : Copyright : $(copyright) Description : main definition =============================================================================== */ #if defined (__USE_LPCOPEN) #if defined(NO_BO..
링버퍼란? 그리고 사용 이유는? Edward입니다.상기 제목처럼1. Ringbuffer란? 2. Ringbuffer를 사용하는 이유에 대해 설명해보겠습니다.먼저,Ringbuffer란 다들 아시다시피 원형 큐인데요.이 원형 큐라는 것을 이해하시려면 먼저 선형 큐(queue) 라는 것을 아셔야합니다.이 선형 큐(Queue)라는 것은 FIFO(First in First out)의 능력을 가진 녀석이에요.FIFO는 선입선출이라는 능력을 가진 녀석으로 첫번째에 들어간 Data가 가장 처음으로 출력되는 녀석이죠.이 Data들이 54321 -> | Databus | -> 54321 이렇게 처음에 들어간 Data가 가장 처음에 출력하는 능력을 가진 녀석입니다.이 FIFO의 능력을 기반으로 만든 것이 선형 큐(queue)이구요. Software 측으로..
채팅 프로그램 인터럽트 & Switch문 추가 저번시간에 언급하였듯이.. 구현해야할 목록들은, 1. Data 한번에 전송되게 하기 2. Socket, listen을 Switch문 안에 넣어 구현하는 것을 생각해보자. 3. UART Data를 interrupt로 받아 처리하기. 입니다. 코드는 아래와 같습니다.하지만, 여기서 구현된건 2번과 3번만 구현되었습니다.[code language="c"] /* =============================================================================== Name : W5500-EVB.c Author : $(author) Version : Copyright : $(copyright) Description : main definition ===============..
채팅 프로그램, 시리얼 통신 추가 ! 이번 시간은 저번 Code에 추가적인 기능을 넣어보겠습니다. Ethernet Socket(Client)로 부터 Data를 받았으면, 그 Data를 자신의 Socket인 Server에 Serial 출력을 하는 것과, Server로부터 Client로 Data를 보내야하기 때문에, Serial Data를 읽어서 Client로 보내는 것까지의 Code 구현을 해보겠습니다.[code language="c"] /* =============================================================================== Name : W5500-EVB.c Author : $(author) Version : Copyright : $(copyright) Description : mai..
W5500-EVB를 이용하여 채팅 프로그램 제작하기 이번 시간은, 우리의 최종목표인 W5500-EVB를 활용한 채팅프로그램 만들기를 해보겠습니다. 아래의 코드들의 수순은, 1. Socket 생성 2. Listen 상태(대기상태) 3. ESTABLISHED 상태(Client와 연결상태) 4. Data Recv/Trans 입니다. 하지만 , 여기서 주의하셔야 할 점은 아래의 Code에서의 Data는 Socket으로 받은 EthernetData라는 점입니다.(Ethernet 통신으로 받은 Data) 다음 시간에는 Serial로 출력하는 방법으로 넘어가도록 하겠습니다.저번시간에 W5500-EVB는 bind() 와 Accept()가 없다고 말씀드렸는데, 그 이유는, W5500-EVB에서 제공하는 라이브러리에서는 bind() + Socket()이 합쳐 있습니다. 그..
채팅 프로그램 제작 전 : 윈도우 채팅 프로그램(BSD소켓) 안녕하세요.Edward입니다.이번시간에는 윈도우 채팅 프로그램에 대해서 알아보는 시간입니다. 윈도우 채팅 프로그램은 TCP기반 IPv4환경으로 작성으로 되며, 아두이노 코드와 비교 시 흐름은 같지만 코드가 다르다는 점 명심하시기 바랍니다.출처 - http://www.hacure.com/b/it_tip-215사용 헤더 #include : 윈도우 환경에서 소켓 관련 함수를 호출하기 위한 함수가 포함된 헤더 #include #include : 데이터를 보내고 받기위한 문자열 관련 함수가 포함된 헤더이면서 메모리 관리에 대한 함수를 포함하고 있습니다. #pragma comment(lib,"ws2_32.lib") : 윈도우에서 소켓 프로그래밍을 위해 추가해야하는 라이브러리 추가하는 방법에는 아래 2가지가 있습니다..