socket 프로그램시 질문입니다

izlley의 이미지

tcp통신을 하는도중에..
우선 connect를 해서 서로 접속을 했습니다.
그다음에 client의 요청에 server는 sockfd에다 요청에대한 응답을 write했습니다.
그다음에 저는 client상에서 sockfd을 통해서 server의 결과를 buf로 read한후

Quote:

while((n=read(sockdf, buf, 30) > 0)
write(stdout, buf, n);

이렇게 하면 당연히 읽는 즉시 화면에다 출력을 해줄주알았습니다.
이상해게도 처음에는 화면에 잘 출력 되었습니다. 하지만 프로그램을 종료한후에(ctrl+c) 다시 실행시켜보니 아무것도 출력이 되지 않았습니다.
처음에는 read시 error가 났는줄 알고 확인을 해보니 read는 정상적으로
돼서 buf안에는 string들이 저장돼있었습니다. 하지만 write시에 이상하게도
화면에는 출력이 되지 않았습니다..
그래서 한면 write를 쓰지 않고 fputs(buf, stdout)을 해보니 출력이 되는것이었 습니다..
write()나 fputs()이나 low레벨에선 같은 함수인거라고 생각이드는데.. 왜 write시에 출력이 안됐는지 의문입니다..

그리고 또 이상한것은 이프로그램을 fix할려다 안돼서 재부팅을 하면 될려나 하고
재부팅을 해봤는데 부팅시에 무슨 IRQ.... socket 0000033? 뭐이런 error가 뜨는것 같았습니다..;
제가 뭘 잘못했는지 잘 모르겠네여.. 왜 화면에다 출력이 안됐는지도 의문입니다. :oops:

가르쳐 주시면 감사드리겠습니다...

izlley의 이미지

izlley wrote:
tcp통신을 하는도중에..
우선 connect를 해서 서로 접속을 했습니다.
그다음에 client의 요청에 server는 sockfd에다 요청에대한 응답을 write했습니다.
그다음에 저는 client상에서 sockfd을 통해서 server의 결과를 buf로 read한후
Quote:

while((n=read(sockdf, buf, 30) > 0)
write(stdout, buf, n);

이렇게 하면 당연히 읽는 즉시 화면에다 출력을 해줄주알았습니다.
이상해게도 처음에는 화면에 잘 출력 되었습니다. 하지만 프로그램을 종료한후에(ctrl+c) 다시 실행시켜보니 아무것도 출력이 되지 않았습니다.
처음에는 read시 error가 났는줄 알고 확인을 해보니 read는 정상적으로
돼서 buf안에는 string들이 저장돼있었습니다. 하지만 write시에 이상하게도
화면에는 출력이 되지 않았습니다..
그래서 한면 write를 쓰지 않고 fputs(buf, stdout)을 해보니 출력이 되는것이었 습니다..
write()나 fputs()이나 low레벨에선 같은 함수인거라고 생각이드는데.. 왜 write시에 출력이 안됐는지 의문입니다..

너무 황당해서 이런 test프로그램도 짜봤습니다
main()
{char* str="abcd";
write(stdout, str, 5);
}
//당연히 화면에 출력 될줄 알앗는데 화면엔 아무것도 나타나지 않았습니다--;

그리고 또 이상한것은 이프로그램을 fix할려다 안돼서 재부팅을 하면 될려나 하고
재부팅을 해봤는데 부팅시에 무슨 IRQ.... socket 0000033? 뭐이런 error가 뜨는것 같았습니다..;
제가 뭘 잘못했는지 잘 모르겠네여.. 왜 화면에다 출력이 안됐는지도 의문입니다. :oops:

가르쳐 주시면 감사드리겠습니다...

izlley의 이미지

it was my minor mistake;;

write(int fd <---- it's type is not file* but int! ...);

sorry;; (i cant write in Korean now, sorry about this)

댓글 달기

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