TCP/IP 소켓프로그래밍 + 영상처리 프로그래밍 을 함께 돌리고싶습니다. 물론 같은 코드입니다.

mmx822의 이미지

일단 제가 하고 있는 프로그램은 영상을 보고 사람을 가려낸 뒤 외부인이라 판명되는 사람이 발견되면 화면을 저장하고
그 저장한 스크린샷을 TCP/IP 통신을 이용해서 안드로이드 폰으로 즉시 전송하는 프로그램입니다.

헌데 문제가 생겼습니다. TCP/IP 통신 과정중에 listen 하고 accept하는 과정이 있는데 이 과정에서 클라이언트가 접속 요청을 하지않으면
본 프로그램(C++로 작성) 이 accept 라인에서 멈춰버립니다. (물론 클라이언트가 접속을 하지 않았기 때문이겠지요.) 제가 궁금한건 클라이언트가 접속을 하지 않아도 accept 라인에서 멈추지않도록하는건데요. 그래야 계속 영상분석 프로그램이 돌아가거든요.

쓰레드를 사용해서 TCP/IP 소켓부분 과 영상처리 부분을 따로 돌릴까도 생각해봤는데 보통 이런 프로그램의 경우 어떻게 코딩을 하나요??

라스코니의 이미지

지금 하고자 하시는 일 중에 TCP/IP 통신은 매우 작은 부분입니다.

정리를 하자면
1. 영상 촬영
2. 사람 인식
3. 폰 전송

으로 나눌 수가 있을 것 같은데 각각 쓰레드로 돌리는게 좋습니다.

mmx822의 이미지

역시.. 다 따로따로 쓰레드를 써야겠지요??
근데 문제가 있습니다. accept를 하는 코드와 이미지를 전송하는 코드가 서로 다른 곳으로 흩어져야하는 상황입니다.
왜냐하면 침입자가 확인되어 스크린샷을 찍었을 때 바로 다음 라인에 전송코드가 들어가야만이 가장 최근의 스크린샷을 폰으로 전송할 수 있기 때문인데요.
이렇게 되면 쓰레드를 각각 돌리기가 애매해보이는데 어떻게 해야할까요? ㅜ

라스코니의 이미지

스크린샷을 찍었다면 그 이미지 데이터는 어디엔가(버퍼) 들어가 있겠죠. 그렇다면 전송코드는 어디에 위치하던 그 버퍼에 접근만 가능하면 된다고 판단되네요.

그런데 올리신 글로 판단해 보건데 실시간으로 << 영상 촬영 -> 영상 판독 -> if 침입자? -> 폰 전송 >> 처리를 하실려는 것 같은데.... 맞나요?

그렇다면 상당히 높은 퍼포먼스가 필요할 듯 한데요..... 현실상 좀 맞지 않는 부분이 있고,

영상 촬영(또는 사람 판별 기능 추가)만 하는 쓰레드(영상 버퍼에 하나의 샷으로 저장) 하나,
영상 버퍼에 있는 샷에서 사람을 침입자로 판별(침입자로 판별되면 침입자 버퍼에 저장)하는 쓰레드 하나,
침입자 버퍼에 있는 샷을 폰에 전송하는 쓰레드 하나

이렇게 구분하시는게 기능 설계할 때 이점이 있을 것 같네요.

익명 사용자의 이미지

select등 non-block io함수로 피할 수 있긴 합니다.

댓글 달기

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