.NET Framework 4.0
CMD 창에서 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
.NET Framework 4.0
CMD 창에서 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
자바에서 JMF 를 활용해서 웹캠 연결하기 (0) | 2013.03.21 |
---|
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]$
④ 파일에 저장된 데이터 읽기
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]$
전화를 거는 소켓의 구현 (0) | 2011.07.04 |
---|---|
전화를 받는 소켓의 구현 (0) | 2011.07.04 |
② 연결의 요청
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]$
저수준 파일 입출력과 파일 디스크립터 (2) | 2011.07.04 |
---|---|
전화를 받는 소켓의 구현 (0) | 2011.07.04 |
② 소켓에 IP주소와 PORT번호 할당
③ 소켓을 연결요청 가능상태로 변경
④ 연결요청에 대한 수락
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);
}
저수준 파일 입출력과 파일 디스크립터 (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
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
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 |
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 |
* 배열에 항목을 추가할때
$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() : 연상 배열을 키를 기준으로 역순으로 정렬
global 변수 , static 변수 (0) | 2011.05.05 |
---|---|
재귀호출 (0) | 2011.05.05 |
배열 (0) | 2011.05.05 |
if-else , 비교연산자 , 삼항연산자 , 반복문 , 함수 (1) | 2011.04.19 |
변수 , 연산자 , 수학적함수 (0) | 2011.04.19 |