소켓 send 버퍼에 남아있는 사이즈를 알 수 있는 방법?

ssehoony의 이미지

non-block tcp 소켓으로 send 를 했을 때
network bandwitdh 로 인해 송신이 지연되어
아직 송진되지 않고 소켓 send 버퍼에 남아있는 자료가
몇 byte 인지 알 수 있는 방법 있나요?

플랫폼은 solaris 2.8 입니다.
솔라리스가 아닌 다른 플랫폼에서의 방법이어도 괜찮습니다.
다른 플랫폼에서의 방법이라도 있다면 그 방법을 참고해서 자료를 찾아 볼 있으니깐요.

익명 사용자의 이미지

non-blocking 이라면 현재 send buffer로 보낸 양과 아직 보내지 못한 양을
프로그래머가 이미 알고 있을텐데요.
write()의 리턴값으로 (또는 send())말입니다.

ssehoony의 이미지

non block 일때 write 함수에서 리턴되는 값은, 상대측에 보내고 남은(보내지 못한) 바이트라고 보통 편의상 말하지만, 정확하게는 socket의 send 버퍼에 최대한 담고, 더이상 담지 못한 나머지 부분입니다. (send 버퍼에 있는건 kernel 이 background 로 알아서 송신해 줍니다.)

marten의 이미지

devilhero wrote:
non block 일때 write 함수에서 리턴되는 값은, 상대측에 보내고 남은(보내지 못한) 바이트라고 보통 편의상 말하지만, 정확하게는 socket의 send 버퍼에 최대한 담고, 더이상 담지 못한 나머지 부분입니다.

위의 말이 맞나요? write의 리턴값은 send 버퍼에 넣은 바이트 수 아니던가요?

익명 사용자의 이미지

marten wrote:
devilhero wrote:
non block 일때 write 함수에서 리턴되는 값은, 상대측에 보내고 남은(보내지 못한) 바이트라고 보통 편의상 말하지만, 정확하게는 socket의 send 버퍼에 최대한 담고, 더이상 담지 못한 나머지 부분입니다.

위의 말이 맞나요? write의 리턴값은 send 버퍼에 넣은 바이트 수 아니던가요?


kernel send buffer에 넣은 바이트 수입니다.
따라서, 보내려고 한 사이즈 - 리턴값 = 현재 커널 센드 버퍼에 있으리라고 예측되는 바이트수
뭐 이런 계산이 대충되겠군요.
ssehoony의 이미지

네 제가 잘못 답했네요.
send 버퍼에 넣고 남은 바이트라니... 죄송.
다른 분 말씀 처럼 send buf 에 넣은 사이즈 입니다.

Quote:
보내려고 한 사이즈 - 리턴값 = 현재 커널 센드 버퍼에 있으리라고 예측되는 바이트수
뭐 이런 계산이 대충되겠군요.

잘 못된 계산 방법 같네요.

댓글 달기

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