메신져에서 서버와의 소켓 연결을 계속 유지 해야하는지요..

rain의 이미지

java로 메신져를 만들어 보고 있습니다.
궁금한건 로그인 후에 서버에 연결된 상태를 유지해야하는지
궁금해서 입니다.
로그인 하면서 다른 client에 대한 ip주소나
기타 정보를 받아와서 client끼리 직접 연결하도록 구성해서
실제 로그인 후에 서버와 데이터를 주고 받는 경우는 자리비움이나
그런 상태를 모니터링 하는 경우 밖에 없게 돼는데 그런 경우에만
socket을 열어서 서버에서 정보를 변경하도록 하고 닫는게
계속 열어두는 것 보다는 효율적인거 같습니다. 게다가 서버쪽에서
현제 로그인 되어 잇는 모든 클라이언트에 대한 소켓을 연다면 것 또한
문제가 될꺼 같거든요.

하지만 모뎀이 꺼져서
아에 접속이 끊어지는 경우를 생각해보면
소켓을 계속 열어두지 않는이상 접속이
끊긴 클라이언트를 알수가 없을꺼 같은데요. 소켓을 계속 열어 두지
않고 아는 방법이 있을까요? UDP socket을 사용해서 주기적으로
모니터링해야할까요? 건 조금 신뢰성이 떨어지는 거 같기두 하구요.
아니면 TCP소켓을 열어둔상태로 모니터링이 되는게 맞는 건가요?

용가리의 이미지

제 생각에는 서버랑은 계속 연결을 유지하는게 좋을듯 싶네요....
그래야지 친구와 같은 사람들이 당신의 상태를 실시간적으로
알 수 있을테니까요.... 그리고 클라이언트끼리는 연결시킬
필요 없습니다. 요청이 들어올떄만 연결하면 되는거지요....
MSN도 보시면 기본적으로 서버랑은 계속 연결되어 있습니다.
그리고 대화창을 하나 열때만 해당 사용자랑 연결이 성립되는거지요.
님처럼 불필요하게 클라이언트들끼리 연결 시켜놓는게 클라이언트에게
더 부담이 되겠지요.
님이 직접 MSN 띄워놓으시고, 각 액션을 취할떄마다 네트워크 상태가
어떻게 변하는지 님 컴터에서 "netstat -an"으로 한번
관찰을 해보세요. 그게 다른 사람들이 과연 무슨 생각으로 메신저를
짰늘줄 알수 있는 좋은 방법이니까요......

그럼 수거여!

rain의 이미지

님 답변 잘 읽었습니다. 덕분에 좀 수월해진거 같네요...^^

지금 혼자 만들어 보구 있는 거라 서버까지 같이 짜는게 쉽기도 하면서
(프로토콜 구성에 대한 변경 같은것에서) 귀찮기도 하구 그래서 서버쪽
역활을 많이 줄일려구 그랬거든요. 자신의 상태가 변하면 친구로 등록된
클라이언트들에게 서버를 거치지 않고 알려주는 방식으로요.
그러면 괜히 더 구성만 복잡해 질꺼같네요..^^;;

답변감사하구요...기분 좋은 한주 보내세요..^^

세상에서 가장 이해하기 힘든 것은 내 자신이 그것을 이해할 수 있다는 것이다.
- 알베르트 아인슈타인 -

iamslash의 이미지

http://www.hypothetic.org/docs/msn/ietf_draft.php

저도 예전에 msn과 비슷한 것을 만든 경험이있는데요...
위의 문서를 참고해서 상당히유사하게 만들었습니다.

서버의 구성및
클라이언트와의 연결 방법과
쓰여지는 프로토콜에 관해서
좋은 참고가 될 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.