목록Programming/C (16)
외로운 Nova의 작업실

안녕하세요. 오늘은 지난시간에 이어 half-close()함수에대해 배워보겠습니다. half-close()함수를 설명하기에 앞서 필요성에대해 설명해보겠습니다. 서버와 클라이언트 사이에 통신할때 아래와 같은 상황이면 서버는 마지막 클라이언트의 문자열을 받지못합니다. 그전에 EOF라는게 있는게 EOF란 End Of File 이라는 뜻입니다. 소켓에서는 closesocket()함수를 사용할때 상대에게 EOF가 전달이됩니다. 그럼 한번 흐름을 봅시다. 1. 클라이언트 ---연결요청 --> 서버 2. 서버 --- 파일데이터 --> 클라이언트 3. 서버 ---EOF(closesocket()) --> 클라이언트 4. 클라이언트 ---"Thank you" --> 서버 위 상황에서 3번의 흐름에 서버는 closesock..

안녕하세요, 이번시간에는 저번시간에 못했던 문제 해결과 UDP연결 방법에대해서 포스팅 해볼까합니다. 저번 시간에 echo서버 구현중 계속 클라이언트쪽에서 이상한 문자열이 반복되어 나타나는 현상이있었는데요. 그 현상은 바로 send(),recv()함수의 전달 문자열의 크기 때문이였습니다. 저번 코드를 잠깐 보자면, 아래는 서버 코드 (messLen = recv(clntSocket, message, BUF_SIZE - 1, 0) send(clntSocket, message, BUF_SIZE, 0); 아래는 클라이언트 코드 send(hostSocket, message, strlen(message), 0); messageLen = recv(hostSocket, recvMessage, BUF_SIZE - 1, 0..

안녕하세요, 지난 3장에서는 hello worl를 서로 받아서 클라이언트가 출력하는 소켓프로그래밍을 진행했었습니다. 이번 4장에서는 좀 더 업그레이드 버전인 에코 서버를 구현해보려고했습니다. 에코 서버란 클라이언트가 서버에게 특정 문자열을 보내면 서버가 다시 그 문자열을 클라이언트에게 전송해 출력해내는 서버입니다. 예를 들어 클라이언트가 "안녕"이렇게 보내면 서버도 "안녕" 이렇게 클라이언트에게 보내지고 클라이언트는 그 문자열을 콘솔창에 출력하게됩니다. 오늘 안으로 끝내려고했지만 이상한 오류를 마주하게됬습니다. 그게 뭐냐면 클라이언트가 문자열을 보내면 서버에서 잘 받지만 클라이언트에서 출력할때 ?문자에서 儆 문자로 계속 변경 됩니다. 이에관해서 고민해봤지만 결국 답을 알 순 없었습니다. 책은 윤성우의 t..
저번 2장에서 정리한것들을 기반으로 간단하게 소켓서버를 만들어보고 클라이언트가 접속하면 hello world 문장을 클라이언트에게 줘서 클라이언트가 콘솔에 출력하는 콘솔앱을 한번 만들어보겠습니다. 저번시간에는 이번 3장에서 쓸 내용들을 정리해봤는데요, 이번 장을 공부하면서 정의가 필요하다면 2장으로 넘어가서 보고 오면 이해가 되실겁니다. 먼저, 컴퓨터간의 통신은 굉장히 복잡하게 이루어져있습니다. 하드웨어적으로 구현 가능해야하다보니 필요한 조건들도 많습니다. 가령 통신을 할려면 sin_family를 정해줘야하는 것같이 말이죠. 저 sin_family를 모르신다면 지난 2장으로 넘어가서 한번 봐주시고 이해해주시기바랍니다. 또한 소켓 프로그래밍은 최소 c언어 책한권은 다읽어보고 예제까지 다 구현이 가능했다하시..
유튜브만 보고 만들어 보려했는데 좀 더 깊이 알고싶어서, 책을 삿습니다. 윤성우의 열혈 tcp/ip 프로그래밍을 삿습니다. 이 책을 정독한 후에 채팅 프로그램을 만들어볼 생각입니다. 책을 읽고 윈도우 운영체제 기반 소켓프로그래밍에 관련된 함수들을 정리해볼생각입니다. 결국에 프로그래밍을 배운다는건 이미 만들어져있는 라이브러리에 정의된 함수, 구조체, 상수들을 알고 활용한다는 것이라고 생각합니다. 아래는 winsock.h 헤더파일에 들어있는 여러가지 함수,구조체 상수들 입니다. 아래 함수들이 어떻게 작동하는지가 아닌 앞으로의 프로그램 만드는 과정에 있어서 함수나 구조체의 정의가 필요할때면 이번 2장으로 와서 정의를 확인하는게 좋을 것 같아서 이번 2장에는 정리만 하겠습니다. 앞으로 새로운 함수나 구조체가 정..
구동 버전 intel i5 - window10 양방향 채팅프로그램을 하려면 컴퓨터로 네트워크를 다뤄야한다.네트워크는 c에서 소켓이라는 객체로 다루어진다.이를 소켓프로그래밍이라고하는데 이는 처음이라서 유튜브로 정독후에 프로그래밍을 하려고 생각하고있다.좋은 유튜브 영상이있어서 공유하려한다.아래들어가보면 책한권의 내용이 유튜브40편에 다 담겨있다. 다 보고 프로그래밍을 해볼예정이다.https://youtu.be/p3giFcDeCjE 오늘은 8편정도 봣다. 이번주 주말까지 몰아보고 다음주 월요일부터 할까 생각중이다