.NET Framework 4.0

CMD 창에서 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

 

'Programming > JMF' 카테고리의 다른 글

자바에서 JMF 를 활용해서 웹캠 연결하기  (0) 2013.03.21

'Programming > JMF' 카테고리의 다른 글

JWebCam.java 파일과 캠이 연동이 안될때 해결방법  (0) 2013.03.21

* 파일 디스크립터

   : 운영체제가 만든 파일 또는 소켓의 지칭을 편히 하기 위하여 부여된 숫자




* 저수준 파일 입출력

① 파일 열기




② 파일 닫기



③ 파일에 데이터 쓰기



* low_open.c

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>

void error_handling(char * message);

int main(void) {
        int fd;
        char buf[] = "Let's go!\n";

        fd = open("data.txt", O_CREAT | O_WRONLY | O_TRUNC); // 새로운 파일이 생성되어 쓰기만 가능
        if(fd == -1)
                error_handling("open() error");
        printf("file descriptor : %d \n", fd);

        if(write(fd, buf, sizeof(buf)) == -1) // fd 에 저장된 파일 디스크립터에 해당하는 파일에 buf 에 저장된 데이터 전송
                error_handling("write() error");
        close(fd);
        return 0;
}

void error_handling(char * message) {
        fputs(message, stderr);
        fputc('\n', stderr);
        exit(1);
}

[ksh@localhost 110704]$ ./low_open
file descriptor : 3
[ksh@localhost 110704]$ ls
data.txt  hello_client  hello_client.c  hello_server  hello_server.c  low_open  low_open.c
[ksh@localhost 110704]$ cat data.txt
Let's go!
[ksh@localhost 110704]$


④ 파일에 저장된 데이터 읽기




* low_read.c

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define BUF_SIZE 100

void error_handling(char * message);

int main(void) {
        int fd;
        char buf[BUF_SIZE];

        fd = open("data.txt", O_RDONLY); // data.txt 를 읽기 전용으로 열기
        if(fd == -1)
                error_handling("open() error");
        printf("file descriptor : %d \n", fd);

        if(read(fd, buf, sizeof(buf)) == -1) // buf 를 읽어 데이터를 저장
                error_handling("read() error");
        printf("file data : %s", buf);
        close(fd);
        return 0;
}

void error_handling(char * message) {
        fputs(message, stderr);
        fputc('\n', stderr);
        exit(1);
}

[ksh@localhost 110704]$ ./low_read
file descriptor : 3
file data : Let's go!
[ksh@localhost 110704]$



* fd_seri.c

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>

int main(void) {
        int fd1, fd2, fd3;

        fd1 = socket(PF_INET, SOCK_STREAM, 0);
        fd2 = open("test.dat", O_CREAT | O_WRONLY | O_TRUNC);
        fd3 = socket(PF_INET, SOCK_DGRAM, 0);

        printf("file descriptor 1 : %d\n", fd1);
        printf("file descriptor 2 : %d\n", fd2);
        printf("file descriptor 3 : %d\n", fd3);

        close(fd1);
        close(fd2);
        close(fd3);
        return 0;
}

[ksh@localhost 110704]$ ./fd_seri
file descriptor 1 : 3
file descriptor 2 : 4
file descriptor 3 : 5
[ksh@localhost 110704]$

'Programming > Socket' 카테고리의 다른 글

전화를 거는 소켓의 구현  (0) 2011.07.04
전화를 받는 소켓의 구현  (0) 2011.07.04

* 소켓의 생성과정

   ① 소켓 생성
   ② 연결의 요청


① 소켓 생성




② 연결의 요청





* hello_client.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

void error_handling(char * message);

int main(int argc, char *argv[]) {
        int sock;
        struct sockaddr_in serv_addr;
        char message[30];
        int str_len;

        if(argc != 3) {
                printf("Usage : %s <IP> <port>\n", argv[0]);
                exit(1);
        }

        sock = socket(PF_INET, SOCK_STREAM, 0); // 소켓 생성
        if(sock == -1)
                error_handling("socket() error");

        memset(&serv_addr, 0, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = inet_addr(argv[1]);
        serv_addr.sin_port = htons(atoi(argv[2]));

        if(connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1) // 서버 프로그램에 연결을 요청
                error_handling("connect() error");

        str_len = read(sock, message, sizeof(message) - 1);
        if(str_len == -1)
                error_handling("read() error");

        printf("Message from server : %s \n", message);
        close(sock);
        return 0;
}

void error_handling(char * message) {
        fputs(message, stderr);
        fputc('\n', stderr);
        exit(1);
}


[ksh@localhost 110704]$ ./hello_server 9001&
[4] 10256
[ksh@localhost 110704]$ ./hello_client 127.0.0.1 9001
Message from server : Hello World!
[4]   Done                    ./hello_server 9001
[ksh@localhost 110704]$

'Programming > Socket' 카테고리의 다른 글

저수준 파일 입출력과 파일 디스크립터  (2) 2011.07.04
전화를 받는 소켓의 구현  (0) 2011.07.04

* 전화를 받는 소켓의 생성과정

   ① 소켓 생성
   ② 소켓에 IP주소와 PORT번호 할당
   ③ 소켓을 연결요청 가능상태로 변경
   ④ 연결요청에 대한 수락


소켓 생성



② 소켓에 IP주소와 PORT번호 할당



③ 소켓을 연결요청 가능상태로 변경



④ 연결요청에 대한 수락




* hello_server.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>

void error_handling(char *message);

int main(int argc, char *argv[]) {
        int serv_sock;
        int clnt_sock;

        struct sockaddr_in serv_addr;
        struct sockaddr_in clnt_addr;
        socklen_t clnt_addr_size;

        char message[] = "Hello World!";

        if(argc != 2) {
                printf("Usage : %s <port>\n", argv[0]);
                exit(1);
        }
        serv_sock = socket(PF_INET, SOCK_STREAM, 0); // 소켓생성
        if(serv_sock == -1)
                error_handling("socket() error");

        memset(&serv_addr, 0, sizeof(serv_addr));
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
        serv_addr.sin_port = htons(atoi(argv[1]));

        if(bind(serv_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1) // IP주소와 PORT번호 할당
                error_handling("bind() error");

        if(listen(serv_sock, 5) == -1) // 연결요청을 받아들일 수 있는 상태가 된다
                error_handling("listen() error");

        clnt_addr_size = sizeof(clnt_addr);
        clnt_sock = accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_addr_size); // 연결요청의 수락
        //연결요청이 없는 상태에서 이 함수가 호출되면, 연결요청이 있을 때까지 함수는 반환하지 않는다
        if(clnt_sock == -1)
                error_handling("accept() error");

        write(clnt_sock, message, sizeof(message));
        close(clnt_sock);
        close(serv_sock);
        return 0;
}

void error_handling(char * message) {
        fputs(message, stderr);
        fputc('\n', stderr);
        exit(1);
}

'Programming > Socket' 카테고리의 다른 글

저수준 파일 입출력과 파일 디스크립터  (2) 2011.07.04
전화를 거는 소켓의 구현  (0) 2011.07.04


1.
<?php
   function my_reverse($param_array, $num) {
      for($i = 0;$i < $num;$i++)
         $temp_array[$num-$i-1] = $param_array[$i];
      $param_array = $temp_array;
   }

   $num_array = array(10, 20, 30, 40, 50);
   print "before = ";
   for($i = 0;$i < sizeof($num_array);$i++)
      print "$num_array[$i] ";
   my_reverse($num_array, sizeof($num_array));
   print "<br>after = ";
   for($i = 0;$i < sizeof($num_array);$i++)
      print "$num_array[$i] ";
?>

before = 10 20 30 40 50
after = 10 20 30 40 50



2.
<?php
   function my_reverse(&$param_array, &$num) {
      for($i = 0;$i < $num;$i++)
         $temp_array[$num-$i-1] = $param_array[$i];
      $param_array = $temp_array;
   }

   $num_array = array(10, 20, 30, 40, 50);
   print "before = ";
   for($i = 0;$i < sizeof($num_array);$i++)
      print "$num_array[$i] ";
   my_reverse($num_array, sizeof($num_array));
   print "<br>after = ";
   for($i = 0;$i < sizeof($num_array);$i++)
      print "$num_array[$i] ";
?>

before = 10 20 30 40 50
after = 50 40 30 20 10

'Programming > PHP' 카테고리의 다른 글

global 변수 , static 변수  (0) 2011.05.05
재귀호출  (0) 2011.05.05
연상배열  (3) 2011.05.05
배열  (0) 2011.05.05
if-else , 비교연산자 , 삼항연산자 , 반복문 , 함수  (1) 2011.04.19


* global 변수 : 함수 영역 밖에 있는 변수를 참조하는 경우

1.
<?php
   function counts() {
      global $i;
      $i = $i + 1;
   }
 
   $i = 0;
   while($i < 10) {
      counts();
      print $i . "<br>";
   }
?>

1
2
3
4
5
6
7
8
9
10



* static 변수 : 이전의 함수 호출시 가지고 있던 변수의 값 유지

2.
<?php
   function inc() {
      static $i = 1;
      print $i . "<br>";
      $i = $i + 1;
   }

   for($j = 1;$j <= 10;$j++)
      inc();
?>

1
2
3
4
5
6
7
8
9
10

'Programming > PHP' 카테고리의 다른 글

Call-by-value , Call-by-reference  (0) 2011.05.05
재귀호출  (0) 2011.05.05
연상배열  (3) 2011.05.05
배열  (0) 2011.05.05
if-else , 비교연산자 , 삼항연산자 , 반복문 , 함수  (1) 2011.04.19

1.
<?php
   function fibo($num) {
      if($num == 0 || $num == 1)
         return 1;
      return (fibo($num - 1) + fibo($num - 2));
   }
 
   print "피보나치수열 출력<br>";
   for($i = 1;$i <= 20;$i++)
      print fibo($i) . "<br>";
?>

피보나치수열 출력
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946

'Programming > PHP' 카테고리의 다른 글

Call-by-value , Call-by-reference  (0) 2011.05.05
global 변수 , static 변수  (0) 2011.05.05
연상배열  (3) 2011.05.05
배열  (0) 2011.05.05
if-else , 비교연산자 , 삼항연산자 , 반복문 , 함수  (1) 2011.04.19

* 숫자를 사용하지 않고 문자를 키로 사용하는 배열



* 배열의 항목을 가져올때


* 배열에 항목을 추가할때



* 배열에서 항목을 삭제할때




1.
<?php
   function print_fr($arr_var) {
      foreach($arr_var as $arr_item) {
         if(is_array($arr_item))
            print_fr($arr_item);
         else
            print "Color = " . $arr_item . "<br>";
      }
   }
   function print_fruit($arr_var) {
      foreach($arr_var as $arr_item => $arr_list) {
         print "FRUIT : " . $arr_item . "<br>";
         if(is_array($arr_list))
            print_fr($arr_list);
         else
            print "Color = " . $arr_list . "<br>";
         print "============================<br>";
      }
   }

   $fruit = array(

     "Apple"  => "Red",
     "Pear"  => array("Brown", "Yellow"),
     "Peach"  => "Pink",
     "Tomato" => array("Red", "Green"),
     "Banana" => "Yellow" );

   print "**** BEFORE ****<br>";
   print_fruit($fruit);
   print "<br><br>";
   print "**** AFTER ****<br>";
   unset($fruit[Pear], $fruit[Banana]);
   print_fruit($fruit);
?>

**** BEFORE ****
FRUIT : Apple
Color = Red
============================
FRUIT : Pear
Color = Brown
Color = Yellow
============================
FRUIT : Peach
Color = Pink
============================
FRUIT : Tomato
Color = Red
Color = Green
============================
FRUIT : Banana
Color = Yellow
============================


**** AFTER ****
FRUIT : Apple
Color = Red
============================
FRUIT : Peach
Color = Pink
============================
FRUIT : Tomato
Color = Red
Color = Green
============================



* 연상배열의 정렬


 

   1) asort() : 연상 배열을 값을 기준으로 정렬
   2) arsort() : 연상 배열을 값을 기준으로 역순으로 정렬
   3) ksort() : 연상 배열을 키를 기준으로 정렬
   4) krsort() : 연상 배열을 키를 기준으로 역순으로 정렬

'Programming > PHP' 카테고리의 다른 글

global 변수 , static 변수  (0) 2011.05.05
재귀호출  (0) 2011.05.05
배열  (0) 2011.05.05
if-else , 비교연산자 , 삼항연산자 , 반복문 , 함수  (1) 2011.04.19
변수 , 연산자 , 수학적함수  (0) 2011.04.19

+ Recent posts