▶함께배우는 프로세싱 : Server & Client ① 다중 사용자와의 통신
다중 사용자와 통신, 1부 : 서버
브로드캐스팅은 서버와 클라이언트가 한 방향으로 통신하는 시스템입니다.서버는 데이터를 전송하고, 클라이언트는 받기만하는 수동적 위치에 있습니다.이러한 일 방향의 커뮤니케이션을 넘어 클라이언트와 서버가 서로 커뮤니케이션할 수 있도록하는 것이 다중 사용자와의 통신이라고 할 수 있습니다.
다중사용자 애플리케이션 만들기
다중 사용자 애플리케이션 역시 프로세싱의 net 라이브러리를 통해 제작 할 수 있습니다.
예) 한 클라이언트가 마우스를 스크린에서 움직이면 그 x, y좌표값을 다른 클라이언트들에게 보내줍니다.
따라서 서버에 연결된 모든 클라이언트들은 각자의 화면에서 그 움직임을 같이 볼 수 있습니다.
특징 : 다중 클라이언트 사이에서 통신이 가능하다.
이 경우, 한 클라이언트가 한 개 이상의 데이터를 보낸다고 할 때, 서버는 어떤 값이 어디에 연결되어 있는지 어떻게 구분할까?
이 문제는 클라이언트들 사이에서 이루어지는 '통신 네트워크 설정'을 함으로써 해결할 수 있습니다.
우리는 무엇을 보내고 있는 가? : 통신 네트워크 설정을 위해 알아야 하는 것들.
네트워크에서 데이터를 보낼 때 = 우리는 독립적인 바이트들을 보내는 중
예) 우리가 숫자 42를 보내고자 한다면?
client.write(42); //바이트 42를 보낸다. 즉, 숫자 42가 아니라 42바이트를 보내고 있는 것입니다.
client.write("42"); // 문자열 "42"를 보내기.
위 예제에서 두 번째 코드는 문자열을 보냅니다.
다시말해서, 두 개의 문자 '4'와 '2', 즉 2바이트를 보내는 것입니다. 이 바이트는 아스키코드를 문자로 인코딩한 것입니다. 문자 'A'는 아스키코드에서 바이트 65이며, 'B'는 66, 그리고 나머지 문자들도 고유의 바이트 숫자를 가지고 있습니다. '4'는 52, 그리고 '2'는 50입니다.
따라서, 우리가 데이터를 읽을 때 바이트로 들어오는 숫자를 문자로 읽을 것인지, 아니면 숫자로 받아들일 것인지를 결정하고 그에 맞는 read()함수를 사용해야 합니다.
int val = client.read(); // client.read(42)와 같은 의미입니다.
String s = client.readString(); // client.read("42")와 같은 의미입니다.
int num = int(s); // 문자열로 읽은 데이터를 다시 정수화 합니다.
'시각화 > 프로세싱' 카테고리의 다른 글
▶Processing :: 프로세싱의 오디오기능 - Minim라이브러리 (12) | 2014.11.20 |
---|---|
▶함께배우는 프로세싱 :: 위치데이터로 원그리기 ① (1) | 2014.10.18 |
▶ 함께배우는 프로세싱 :: 데이터스트링 : 서버 만들기 (1) | 2014.08.29 |
▶함께공부하는 프로세싱 기초 - rotate 예제 (0) | 2014.08.25 |
▶함께공부하는 프로세싱 기초 - rotateXYZ (0) | 2014.08.23 |