GUI 에서의 소켓 서버 의 구현..

skah2lp2의 이미지

서버라는 것이
while(1){
recvfrom();
}

이런 형태로 데이터가 들어오기를 기다려야 하는데요...

..QT 프로그래밍에서 이렇게 쏘스를 써버리면.. GUI폼이 멈춰버리는 현상이

발생하는데요.. 이부분을 어떻게 처리해야 하죠..??

..그리고 QT 프로그램을 아시는 분이라면....

QT의 socketdevice 를 이용한 UDP 전송시.. unsigned short[76800]

만큼의 데이터를 받고 싶다면 어떻게 구성해야 하나요???

..답변 부탁드립니다.

.

cbycby의 이미지

Thread를 돌리면 해결됩니다.

별도 Thread를 돌려서 recv루틴을 호출해서 데이타를 receive 받구요...

Q_LONG QSocketDevice::readBlock ( char * data, Q_ULONG maxlen ) [virtual]

함수를 이용해서 원하시는 만큼의 데이타를 수신하면 됩니다.

http://www.korone.net QT 커뮤니티 사이트

onlytobe의 이미지

흠 자세히는 말씀 못드리지만....

저 같은 경우 Thread를 생성해서 그안에서 데이터를 받고 보내고 하는 루틴을 집어 넣었습니다.
다른 방법은 잘 모르겠네요..


   if( socket->bytesAvailable () == 76800)
          socket->readBlock( recvBuffer, 76800);

이렇게 하면 되지 않을까요?
skah2lp2의 이미지

소스좀 올려주시면 안될까요?...

..감이 안잡히네요. 그리고 아직 쓰레드 생성

이쪽은 못하는 초보 라서요..

쓰레드가 QT의 쓰레드를 말씀하시는 건지요??

쓰레드라는게 잘은 모르지만 경량화 프로세스 인데..

각자의 메모리 공간을 가지고 있는 것으로 알고 있습니다.

저는 서버에서 받은 값이 영상데이터이기때문에..
특정 배열에 다시 할당해서 영상을 뿌려야 합니다.

쓰레드는 프로세스간의 데이터 전송이 가능하다는 말인지요?

궁금합니다.

소스하나 주시면 감사 하겠습니다..

litdream의 이미지

프로세스는 각각의 메모리 공간이 있지만,
쓰레드는 하나의 프로세스 내에서 메모리, Signal, File descriptor 등을 공유합니다.

삽질의 대마왕...

익명 사용자의 이미지

감사합니다.... 그렇군요.. 지금 다시 소스 수정해봐야겠네요..

onlytobe의 이미지

질문을 잘 이해 못했는데...
QThread를 상속받어서 데이터 읽는 루틴을 하나 만듭니다.
서버가 동작되고 원하는 시점에 Thread를 구동 시킵니다.
Thread안에서 데이터가 준비되면 thread안에서 QCustomEvent에 데이터를
담아 GUI쪽으로 전송합니다.
GUI쪽에서는 해당 이벤트가 오면 데이터를 받아서 처리합니다..

ㅎㅎㅎ
제가 써놓고도 이상하군요...

http://doc.trolltech.com/qq/qq09-networkthread.html
에 Non-Blocking Networting에 관한 내용이 있으니 참조하세요.

댓글 달기

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