본문 바로가기

프로그래밍/코딩(C & SOCKET)

(6)
[180508] Fast Change Directory [180508] Fast Change Directory
[151101] Raw Socket [151101] Raw Socket 오늘은 Raw Socket에 대해서 알아보려고 한다. Socket 이 편지 봉투에 "우표"와 "주소"만 붙여서 보내는 방식이었다고 한다면, Raw Socket 은 편지지부터 시작해서 글자 수, 언어, 주소 등을 포함한 사사로운 모든 요소들을 직접 설정해서 보내는 방식이라고 할 수 있다. 따로 서버를 구축하거나, 다른 컴퓨터가 없어서 송/수신을 테스트하기 어려워 "루프백 아이피"와 "와이어샤크" 를 사용해서, 정말 내가 설정한 값들로 Packet 이 도착하는지 확인해볼 것이다. 흔히 일어나는 통신 방식 중 하나인 TCP/IP 를 이용할건데, 직접 TCP/IP Header Socket 을 만들어 테스트할 것이다. 1. 구조체 및 각 종 변수 선언 unsigned char ..
[151025] 리눅스 디스크립터 [151025] 리눅스 디스크립터 (Descriptor) 드디어 시험이 끝났다. 매일 같이 블로그에 포스팅 하시는 분들 보면 정말 대단하다는 생각이 든다. (..) 지난 번 포스팅에서 서버와 클라이언트를 구현해서 대화하는 프로그램을 포스팅 했는데, 잘 모르는 상태에서 검색을 하고 프로그램을 짜다보니 그저 소스 코드 옮겨 쓰기라는 느낌이 강하게 들었다. 사실상 지금 머리에 많이 남아있는 것도 없는 것 같다. 그래서, 한 번에 큰 프로그램 보다는 코드를 분할하여, 각 기능 별로 구분해서 포스팅 할 예정이다. 오늘은 " 파일 디스크립터 "와 " 소켓 " 이 주 개념으로 자리 잡을 것이다. #include #include #include #include #include #include #define PORT 8..
[150909] 리눅스 기반 채팅 chat_sv.c - 1 [150909] 리눅스 기반 채팅 sv_socket.c 지난 번과 마찬가지로 채팅 프로그램이다. 다소 다른 점이 있다면, 단방향 통신에서 양방향 통신으로 바뀌었고 계속해서 기능을 붙여나갈 거라는 정도..? 학기 중에 같이하려니 여간 바쁜게 (귀찮은게) 아니다... 이것만 붙잡고 있을 수도 없는 노릇이니.. 안그래도 이번 학기에 C와 JAVA를 동시에 진행한다. 그 외에 수학과목들과 도대체가 목적을 알 수 없는 오토마타 수업까지.. 바빠서 포스팅이 늦어진다고 또 합리화해본다. 지난 포스팅에서 등장했던 소켓과 각종 함수들을 이해하자마자, 양방향 통신에서는 또 다른 개념들이 등장한다. 주요 개념을 몇 개 집어보라하면, 개인적으로는 FD_SET 구조체와 select() 함수를 예로 들 수 있겠다. 아, 그리고 ..
[150906] 리눅스 C언어 소켓 프로그래밍 [150906] 리눅스 C언어 소켓 프로그래밍 오늘 포스팅할 내용은 리눅스 환경에서의 C언어 소켓 프로그래밍이다. 네트워크 공부를 하면서 소켓 프로그래밍도 겸하면 좋겠다고 생각하고 있었는데, 어느 환경에서 해야 할지 고민이 많았다. 그런데 마침, 학교에서 강의도 진행하고 언어도 배우는 겸, 리눅스 (Xubuntu)에서 진행하기로 결정했다. 리눅스를 거의 사용해보지 않아서 터미널을 사용하는데 많이 애먹었다. 어쨌든, 기초부터 살펴봐야 하므로 인터넷을 통한 통신이 아닌, 같은 기기 내에서 다른 프로세스 끼리의 통신을 진행해보자. 아, 그리고 논외로.. 계속 포스팅하는 레이아웃이 왔다갔다하는데.. 어떤 방식으로 포스팅하는게 가독성이 좋을지 찾아보고 있는 중이다. 모르는 개념들을 구글링 하면서 찾는 중에 티스토..
[150903] C언어 포인터 기초 개념 [150903] C언어 포인터 기초 개념 포스팅을 안한지 무려 11일이 흘렀다(...)마지막 포스팅 후 휴가를 갔다오고, 개강 준비를 위해서 그랬다고 자기 합리화 해본다... 학과 강의 중에 C언어를 배우게 됐다. Network 프로그래밍 언어가 다양해서 뭘 골라야 할까 고민하던 중이었는데, 마침 C언어를 배운다고하고.. 잘 생각해보면 C언어 특성상 소켓 프로그래밍과 잘 어울릴 것 같다는 느낌도 든다.순전히 감이지만.. 어쨌든 오늘 포스팅에서는 C언어에서 상당히 비중있게 다뤄지는 포인터(Pointer) 를 아주 가볍게 알아보자. 아, 그전에 컴퓨터에서 사용하는 메모리(Memory)에 대한 개념이 필요하다. 운영체제(OS)를 알고있다면 32bit, 64bit 와 같은 숫자를 들어본 적이 있을텐데, 이 숫자..