하나의 소켓으로 읽기와 쓰기를 동시에..

leolo의 이미지

네트워크의 클라인트를 만들고 있습니다.
클라이언트가 서버에 connect 하면, 서버가 데이터를 보내고.
클라이언트는 이를 파일에 적습니다.
문제는 클라이언트가 임의의 파일을 읽어서. 동시에 서버로 보내야 합니다.
좀.. 안정성 있게 하나의 소켓으로 읽고 쓰는 것을 동시에 할 수 있는 방법이
없는지요..
부탁드립니다.

서지훈의 이미지

음...
질문 자체가 아주 애매한거 같군요...-_-ㅋ
원래 소켓은 읽기 쓰기가 동시에 될 텐데?
사용하면서 무슨 문제라도 생기신건가요?
만약 문제가 있다면...
소스나 에러난 부분이라도 보여 주셔야 적당한 리플이 달릴거 같군요...
암...
원래 되는건데... 되게 해달라니 정말 좀...-_-ㅋ

<어떠한 역경에도 굴하지 않는 '하양 지훈'>

#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);

verena의 이미지

leolo wrote:
네트워크의 클라인트를 만들고 있습니다.
클라이언트가 서버에 connect 하면, 서버가 데이터를 보내고.
클라이언트는 이를 파일에 적습니다.
문제는 클라이언트가 임의의 파일을 읽어서. 동시에 서버로 보내야 합니다.
좀.. 안정성 있게 하나의 소켓으로 읽고 쓰는 것을 동시에 할 수 있는 방법이
없는지요..
부탁드립니다.

서버로 부터 받은 내용을 클라이언트가 echo하는 형식이 아니라면 특별한 문제는 일어나지 않습니다.

어떤 작업을 설계시에 그 작업들간의 연관성을 먼저 생각해 보시면 간단하게 해결되시리라 봅니다. 일단 위의 님의 글을 보면 클라이언트와 서버 각각의 읽기 및 쓰기 작업은 연관성을 지니지 않는것으로 보이네요.

참고로 양방향으로 통신이 가능한 경우를 보통 full duplex라고 하죠... 당연히 아실테죠^^;

ifyou의 이미지

다른 분들 말씀처럼 하나의 소켓으로 읽기/쓰기는 전혀 문제가 없습니다.

각각, 전송되어져 온 데이터를 저장만 한다면 문제가 없겠지만,

보내는 데이터와 받는 데이터는 무관하고, 받은 데이터에 따라 적절한 값을 리턴

해야 하는 경우라면 약간 복잡해 질 것 같습니다. 이것이 질문하신 분의 요지가

아닐까 생각됩니다(사실 어떤것이 요지인지 잘 모르겠습니다).

제가 말한 경우라면.... 받은 쪽에서 내용을 일일이 파싱하기에는 무리가 있으므로

보낼때 헤더를 구성해서 데이터 종류와 길이를 보낸다면 구별이 좀 쉬워지겠지요.

댓글 달기

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