시각화/프로세싱

▶함께배우는 프로세싱 : Server & Client ①

비주얼라이즈 2014. 8. 29. 23:20




▶함께배우는 프로세싱 : 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); // 문자열로 읽은 데이터를 다시 정수화 합니다.