Q&A

  • Re: 채팅시.. 문자전송시 서버를 거쳐서 서버가 상대방에게 다시 전송하는건가요??
저도 잘은 모르지만...



제가 생각을 해보면 두가지 방식이 보입니다(?)



1.서버가 모든걸 처리해준다



a가 메세지를 보내면 서버를 거쳐 그 대화방에 있는 모든이에게 메세지를 전달한다. 아마

도 이게 대부분의 채팅서버의 구현방법일겁니다. 서버는 현재만들어진 대화방목록과 그

대화방목록의 각각의 사용자, 방장같은 정보를 모두 관리하겠죠.



2.서버의 간섭을 최소로한다.



1번의 방법의 문제는 서버의 과부하라고 할수 있겠죠. 뭐.. 서버가 빵빵하다면 괜찮지

만요.



여기에서 서버의 간섭을 최소로한다는것은 일단 서버는 대화방과 이들 대화방에 있는

대화자들의 목록만을 가지고 있는겁니다. 대신 대화방을 개설한 사람이 부분적(?)으로

채팅서버가 되는것입니다. 이방법은 사용자가 모두 고정아이피이고 방화벽이나 그런게

없다면 허약한(?) 서버에서는 상당히 좋은 방법이 될겁니다. 만약 유동아이피라면

좀... 골(?)때리겠죠...



a가 채팅서버에 로긴 => a가 방을만듬 => 서버에 방정보와 자신의 IP전달 => 서버는 이정보를 저장하고 있다가 새로운 사용자나 방에 들어가기를 원하는 사용자에게 이 IP를 전달

한다 => 전달받은 클라이언트들은 서버를 거치지 않고 받은 IP를 사용하여 서로 통신한다.



물론 IP 정보외에도 여러가지 정보를 통신해야 겠지요.



이렇게 구현을 하면 어렵긴하지만... 서버는 말 그대로 정말 최소한의 중개자의 역할을

할수있을겁니다.



이수정 wrote:

> 안녕하세요..

>

> 서버가 있고, a, b, c, d 라는 사람이 접속을 하게 되어..

>

> a와 b가 대화를 하고 있고...

> c와 d가 대화를 하고 있다고 합시다..

>

> 그때, a 가 '안녕하세요..' 라고 하면.. b한테 전송되어야 하지 않습니까??

>

> (질문1)

> '안녕하세요..' 가 서버로 갔다가 b한테 전송이 되는건지..

> 아니면, a쪽 클라이언트에 b의 정보를 알고 있어서 바로 b쪽으로 보내는건지...

> 궁금합니다...

>

> (질문2)

> 만약 후자의 방식으로 전송되는 것이라면.. 클라이언트가 서버역활도 한다는건데..

> 그렇게 할려고 프로그램 하다 보니까...

>

> Asynchronous socket error 10061 에러가 뜨더라구요...

> 이게 무슨 뜻인지 모르겠네요...

>

>

> 2가지 질문에 대해서.. 조언을 부탁드립니다...

>

0  COMMENTS