분류 전체보기 56

TCP기반의 에코서버/클라이언트

//TCP기반의 에코서버 //made by chessire #include #include #pragma comment(lib, "ws2_32.lib") void Error(char* szMessage); void main() { SOCKET s; // 서버 소켓 디스크립터 SOCKET cs; SOCKADDR_IN server; // 소켓 구조체 SOCKADDR_IN client; // 소켓 구조체 WSADATA wsaData; // 스타트업 구조체 int size = sizeof(client); char value[256]; //수신을 위한 정수값 WSAStartup(MAKEWORD(2,2), &wsaData); s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); //T..

리눅스 기본 명령어

ls - 도스의 "dir"과 같은 역할, 해당 디렉토리에 있는 파일의 목록을 나열한다. cd - 작업 디렉토리를 이동한다. pwd - 현재 작업 디렉토리의 전체 경로를 출력한다. rm - 파일이나 디렉토리를 삭제한다. 해당 파일이나 데릭토리에 삭제 권한이 있어야 한다. cp - 파일이나 디렉토리를 복사한다. 새로 복사한 파일은 사용자의 소유가 된다. touch - 크기가 0인 새 파일을 생성하거나 이미 존재하는 파일인 경우 수정시간을 현재시각으로 변경한다. mv - 파일과 디렉토리의 이름을 변경하거나 위치 이동 시 사용한다. mkdir - 새로운 디렉토리를 생성한다. 생성된 디렉토리는 명령어를 수행한 사용자의 소유가 된다. rmdir - 디렉토리를 삭제한다. 해당 디렉토리의 삭제 권한이 있어야 하며, 파..

네트워크의 주소체계와 데이터 정렬

인터넷 주소(Internet Adress) - IPv4(Internet Protocol version 4) : 4바이트 주소체계(1234.1234.1234.1234) - IPv6(Internet Protocol version 6) : 16바이트 주소체계(1234.1234.1234.1234.1234.1234.1234.1234) : IPv4의 IP주소가 모두 고갈될 것을 염려하여 만들었다. IPv4기반의 주소표현을 위한 구조체 struct sockaddr_in { sa_family_t sin_family; // 주소체계(Adress Family) uint16_t sin_port; // 16비트 TCP/UDP PORT번호 struct in_addr sin_addr; // 32비트 IP주소 char sin_ze..

소켓의 프로토콜 (socket함수를 파헤쳐보자)

프로토콜이란? - 멀리 떨어져 있는 두 사람이 대화를 주고받기 위해서는 나름의 대화방법을 결정해야 하는데, 여기서 결정하는 대화방법을 프로토콜이라고 한다. 즉, '컴퓨터 상호간의 통신에 필요한 규약.'이라고 할 수 있다. SOCKET socket(int af, int type, int protocol); - af(linux에선 domain) : 소켓이 사용할 프로토콜 체계(Protocol Family) 정보 전달. - type : 소켓의 데이터 전송방식에 대한 정보 전달. - protocol : 두 컴퓨터간 통신에 사용되는 프로토콜 정보 전달. 프로토콜 체계(첫 번째 인자값) - PF_INET : IPv4 인터넷 프로토콜 체계 - PF_INET6 : IPv6 인터넷 프로토콜 체계 - PF_LOCAL : ..

윈도우 기반의 소켓관련 함수

#include #pragma comment(lib, "ws2_32.lib") SOCKET socket(int af, int type, int protocol); - 소켓을 생성해주는 함수. 매개변수 af : 소켓이 사용할 프로토콜 체계(Protocol Familiy)정보 전달. type : 소켓의 데이터 전송방식에 대한 정보 전달. proTocol : 두 컴퓨터 간 통신에 사용되는 프로토콜 정보 전달. 반환값 - 성공 시 소켓 핸들, 실패 시 INVALID_SOCKET 반환 int bind(SOCKET s, const struct sockaddr *name, int namelen); - IP주소와 PORT번호 할당을 목적으로 하는 함수. 매개변수 s : IP주소와 PORT번호를 할당받을 소켓을 전달. ..

페도라 리눅스 GUI에서 CUI로 바꾸자~! (vi 명령어 사용)

페도라 리눅스를 방금 막 설치한 유저라면 아마 GUI에서 작업중이실겁니다. 하지만 VMWare를 사용하다보니 GUI환경이라 그런지 Linux가 조금 느린것 같네 싶은 사람들에게 추천하는 CUI환경으로 바꾸는 방법입니다. 아래는 보이는 사진은 터미널 프롬프트를 킨 페도라 리눅스 화면입니다. 아직 GUI환경이지요. su - root는 관리자권한으로 로그인 하는 것입니다. password는 자신이 등록한 password입니다. Password를 입력하면 아래와같이 [root@localhost ~]라고 나와있고, 옆에 명령어를 입력할 수 있게 되어있습니다. 그 명령어 창에 vi /etc/inittab을 입력해주세요. vi는 파일편집기 같은 것입니다. /etc/inittab은 디렉토리구요. 그러면 이런 신기한 글..

리눅스 yum 명령어를 알아보자

mysql은 질의어인 sql(Structured Query Langauge)을 다루는 프로그램이고, gcc는 리눅스기반의 c컴파일러입니다. yum명령어 - yum이란 온라인 저장소에서 업데이트 된 패키지들을 검사하고, 다운로드하여 설치까지 처리해주는 텍스트 기반의 업데이트 명령어입니다. 다운받아 설치해주는 툴이라고 요약할수 있습니다. 사용법 패키지 찾기 # yum list available 설치가 가능한 패키지 목폭 # yum list installed 이미 설치된 list 패키지 목록 # yum list extras 일반 저장소에서 설치되지 않는 패키지 목록 # yum list *vorbis* 'vorbis'타이틀이 있는 패키지 목록 # yum list updates 업데이트 가능한 패키지 목록 # y..

DBMS의 종류(관계형, 객체지향형, 객체관계형)

관계형 데이터베이스 - 관계형 데이터베이스(Relational - Database) 시스템은 가장 대표적인 데이터베이스 시스템으로써 성공적인 데이터 모델이 되었습니다. 이렇게 된 이유에는 다음과 같은 몇 가지 특징이 있었기 때문입니다. 첫째, 2차원 구조의 모델을 기반으로 한다. - 기존 파일 시스템은 계층적인 수직적 구조를 가진 반면 관계형 모델은 수평적 구조이며 2차원적인 구조입니다. 우리가 많이 사용하는 엑셀 시트가 2차원적 구조의 대표적인 예입니다. 이러한 구조는 컴퓨터가 등장하기 훨씬 전인 종이에 기록하는 시대부터 많이 사용되어 왔고, 그만큼 누구에게나 친숙하고 이해하기 쉬운 구조라 할 수 있습니다. 관계형 모델은 데이터들을 이러한 2차원적인 구조를 가진 테이블 형태로 저장하는 구조를 기본으로 ..

페도라 리눅스 시작하기 (명령어 찾기)

페도라 리눅스를 실행시키면, 윈도우즈에서는 명령프롬프트와 비슷한 터미널입니다. bash: mycommand: command not found 터미널에서 나타나는 오류들입니다. 이것들은 ㅁ 사용자가 명령어 이름을 잘못 타이핑 했을 때, ㅁ 명령어가 여러분이 위치한 경로에 있지 않을 때, ㅁ 명령어 실행을 위해 root 사용자 권한이 필요할 때, ㅁ 명령어가 사용자의 컴퓨터에 설치되지 않았을 때, 로 나뉘어 집니다. 그렇다면 명령어를 알아낼 수 있는 방법 없을까요?? 리눅스는 똘똘한 녀석이다보니 명령어를 찾는 명령어도 있습니다. $ type mount - PATH 경로에서 첫 번째 mount 명령을 보여준다. $ whereis mount - mount에 대한 binary, source, man 페이지를 보여..

WSADATA와 WSAStartup, 그리고 WSACleanup

[윈도우 기반의 서버프로그래밍] 헤더파일 winsock2.h 라이브러리파일 ws2_32.lib 윈도우 기반의 서버프로그래밍에서 서버든 클라이언트든지 저 두가지가 없으면 안됩니다!!! 일단 WSADATA부터 알아볼까요? typedef struct WSAData { WORD wVersion; WORD wHighVersion; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR* lpVendorInfo; } WSADATA, FAR *LPWSADATA; 멤버변수 wVersion - 윈도우 소켓 버전. w..