QT qsocket 에서 UDP 기반 서버 구현 문제 입니다..

skah2lp2의 이미지

.제가 글을 잘못 써서 그런지 제글에는 이상하게 답변이 하나두 안달리네요..

..QT의 소켓 으로 UDP 서버를 구현하고 있습니다..

클라이언트 쪽은 q소켓이 아닌 일반 소켓으로 unsigned short 형으로

76800 byte를 100개로 쪼개서 전송을 하고 있습니다..

..문제는 서버 쪽에서 일반소켓과 qt 를 적절하게 합치질 못해서..

GUI폼이 뻗어 버려서 어떤 버튼이벤트나 마우스 무스 조차 안된다는 것입니다.

그래서 서버는 Q소켓으로 구현하고있는 데.. 아래 다음 부분에서 문제가 생깁니다.

QByteArray datagram(socketDevice.byteAvilable());
socketDevice.readBlock(datagram.data(), datagram.size());

QDataStream in (datagram, IO_ReadOnly);
in.setVersion(5);
in>>변수명..

위에 다섯줄 가량을 분석 할수 없고...
제가 원하는 데이터형 unsigned short buffer[768] 배열에

받은 값들을 어떻게 넣느냐는 것입니다..

참고로 영상데이터 들입니다.

cbycby의 이미지

같은 내용인듯 한데요...

참고로, UI 먹통되는것은 qApplicaiton exec()함수내에서 message loop이 block 되어서 그렇습니다.

qApplicatinon 멤버함수인 processEvent()함수를 호출해서 해결을 할 수는 있으나, 님께서 올리신 다른 질문의 답변에서 그러했듯이 Thread 가 적당한 해결책이라 볼 수 있습니다.

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

익명 사용자의 이미지

QSocketDevice *s;
QSocketNotifier *sn;

s = new QSocketDevice(QSocketDevice::Datagram);
s->bind(address, port);
sn = new QSocketNotifier(s->socket(), QSocketNotifier::Read);
connect(sn, SIGNAL(activated(int), SLOT(someslot(int)));

위에처럼 하시고 someslot() 에서 readblock()로 읽으면 됩니다..
ex) s->readBlock(buffer, size);

익명 사용자의 이미지

readBlock 의 함수 원형이 raeBlock( *char,size)

..캐릭터형 포인터를 받는데요.. 제가 받아야 할데이터는

unsigned short형입니다..

영상을뿌리는 소스가.. unsigned short형 배열에

맞춰 져 있기 때문에.. 이렇게 받게 되면..

영상을 뿌릴수가 없느데요..

어떻게 해결해야 하죠??..

cbycby의 이미지

unsigned short형을 char* 형으로 casting하고
casting 된것을 다시 unsigned short 형으로 복원하면 됩니다.

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

댓글 달기

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