리눅스에서 비동기소켓통신 구현 방법 C++ ??

robo의 이미지

윈도우에서는 비동기소켓통신을 위한 클래스가 있구요... MFC...
클라이언트가 접속할때... 데이터 들어올때.. 등등에 대한 메시지가 발생해서.. 프로그래밍하기가 편한데...

리눅스에서는 어떻게 해야될지 감이 안잡힙니다....
RTS...SELECT등이 있다고는 하는데....

클래스로도 어떻게 구현을 해야될지....
쓰레드도 같이 돌아야 할듯한데....

훔... 대략적인 설계 방법등을 좀 알려주시면 감사하겠습니다..^^
C++로 개체지향적으로.. 설계할 경우로요....

berise의 이미지

쉽지 않은 주제로 접근하군요.

친절하게도 이미 구현된(!) 제품이 있습니다.

ACE(Adaptive Comm. Env.)를 찾으시고 Proactor를 보세요.

원하시는 코드가 구현되어 있습니다. 다만, 이해하고 사용하는데 시간이 상당히(...) 걸립니다.

lovemyin의 이미지

우선 소켓통신을 위한 클래스 설계와 스래드 사용에 관한 건 별개의 문제라고 생각합니다. 스래드를 어떤 구조로 설계할 것인가는 소켓통신 클래스와는 별개의 주제로 생각하시는 것이 좋을것 같네요...
ACE에 대한 이해는 책 두권에 걸쳐 설명되어 있는데 시간이 좀 걸릴겁니다. 알고 계신 소켓에 대한 이해도를 감안해서 클래스를 작성해 보세요... 넘 막연한가요....
윈도우에서 소켓통신을 해보셨으면 리눅스에서도 금방 적응하실거라 생각됩니다. 사실 MFC에서 제공하는 비동기 소켓은 버그가 매우 많은 클래스 입니다.
윈도우 프로그래밍에서도 잘 안쓰는 방법이지요...

여기도 그렇고 Joinc도 그렇고 소켓통신에 관한 예제와 문서가 많이 있습니다. 참고하세요...
아래 주소는 비동기소켓 서버 클래스 예제입니다....
http//www.joinc.co.kr/modules/moniwiki/wiki.php/%BA%F1%B5%BF%B1%E2%BC%D2%C4%CF%BC%AD%B9%F6%C5%AC%B7%A1%BD%BA

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.