소켓프로그래밍 질문하나 올려요.

gisara의 이미지

서버와 클라이언트 UDP통신 구현을 하고있는데요,
서버와 클라이언트 동시에 thread를 사용해서 통신하게 하려는데 해결이 잘 안되네요.
서버의 쓰레드에서 sendto를 함과 동시에 메인함수에서 소켓을통해 계속 필요없는 패킷이 들어오네요.
대략적인 코드도 올려봅니다.
client
while(1){
th_id = pthread_create(&p_thread, NULL, myFunc, (void *)th_data);
}
void *myFunc(void *data)
{
//broadcast

setsockopt(send_sock,SOL_SOCKET, SO_BROADCAST, (char*)&so_brd, sizeof(so_brd));
//데이터를 보냄
sendto(send_sock, buf,sizeof(buf),0,(struct sockaddr*)&broad_adr, sizeof(broad_adr));
//결과를 받아옴
recvfrom(send_sock,(char*)&buf,sizeof(buf),0,(struct sockaddr*)&broad_adr, &client_len);
}
server
while(1){
//UDP sock bind
recvfrom(recv_sock,(char*)&buf,sizeof(buf),0,(struct sockaddr*)&broad_adr, &client_len); //쓰레드의 sendto발생과 동시에 이부분 무한루프
th_id = pthread_create(&p_thread, NULL, myFunc, (void *)th_data);
}
void *myFunc(void *data)
{
//결과값 가져옴
sendto(recv_sock, buf,sizeof(buf),0,(struct sockaddr*)&broad_adr, sizeof(broad_adr));
}
이런식으로 구현을 해봤는데.. 해결법을 못찾았네요. 도움좀 받고싶습니다!.

익명 사용자의 이미지

페킷이 들어왔는지 확인할 필요는 없는건가요?

gisara의 이미지

질문내용을 잘 이해를 못했네요 ㅜㅜ

kjhkjh724의 이미지

그 읽어오는 데이터의 유효성을 확인하지 않아도 되는가 에 대한 질문이였어요.

라스코니의 이미지

while(1) pthread_create(...); 식으로 쓰레드를 무한으로 만드는 것이 의도하신 건가요?
금방 수백, 수천개 쓰레드가 만들어질 것 같은데요.....
클라이언트에도 있고 서버에도 있고... 어떻게 돌아갈 지 엄청 궁금하네요...

댓글 달기

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