네트워크 프로그램 작성시 메세지를 주로 어떤 식으로 보내시나

kkojiband의 이미지

일단 숫자같은 경우에는 주로 어떻게 보내시나요?

전 그냥 문자열로 변환시켜서 보내고, 받아서 다시 숫자로 변환해서 사용을 합니다. 네트워크 바이트 순서로 바꿔서 보낼수도 있겠지만 전 그냥 모든 데이타를 문자열로 처리하는게 편할꺼같아서 일단은 이렇게 쓰고 있습니다...

그리고 구조체 같이 여러 개의 연관된 연속된 데이타를 보낼때는 각각에 해당하는 헤더를 붙여서 보냅니다...

다른 분들은 어떤 식으로 사용하시는지 궁금합니다...

그냥 이것저것 조언 부탁드립니다~ ^^

thisnome의 이미지

프로토콜이 정의되어있지 않은 상황, 본인 맘대로 할 수 있다면야 가장 편하신대로 짜는게 맞는것 같습니다.

저역시 비슷한 문제로 고민한 적이 있었는데.. "도데체 어떻게 보내는것이 정석인가?" ^^; 대부분 분들이 그때그때 상황마다 편한대로 하시더군요..

서버 클라이언트 양쪽다 같은 바이트 오더, 같은 32bit 운영체제를 사용하는 경우라면 프로그램하기 가장 편한건 그냥 structure로 보내고 받는방법일 것입니다.
atoi 등을 이용하면 따로 지역변수를 잡아줘야하는데 그런 낭비도 없어지고.. 나름대로 괜찮습니다만.. 정수와 같이 보내는 바이트들의 길이변화가 심하던지 할 경우엔 문제가 있겠죠..

운형의 이미지

string 으로 보내서 구조체(자신이 만든 프로토콜 내용을 담은) 포인터로 캐스팅 해서 찍어다 써두 되죠...
스니핑한 데이터 분석할때 자주 사용하는 방법이져...
send와 recv 둘다 보내거나 받는 데이터 타입이 보이드 포인터라는거 이용하는 거죠...

Do you think that's the air you are breathing now?

dormael의 이미지

프로토콜이 미리 정의되어 있지 않고, c/s가 모두 자바여서 객체로 보내는 방법을 쓴적이 있습니다. 무지 편했죠.

하지만 가끔 에러가 났다는...

그리고 v3 인터넷 감시와도 약간 충돌이 있었던것 같네요.

대부분 이미 프로토콜이 정해져 있었어서 그에 맞춰 했던 기억밖에 없네요.

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

stoneshim의 이미지

음... 지금 '주제 검토' 부분이 보이지 않는군요..

Quote:
프로토콜이 미리 정의되어 있지 않고, c/s가 모두 자바여서 객체로 보내는 방법을 쓴적이 있습니다. 무지 편했죠.

이렇게 객체를 보내려면, 마샬링/언마샬링 이 필요하지 않나요?
자바에서는 시리얼라이즈, 디시리얼라이즈라고 표현했던것 같은데요.

우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자

dormael의 이미지

stoneshim wrote:
이렇게 객체를 보내려면, 마샬링/언마샬링 이 필요하지 않나요?
자바에서는 시리얼라이즈, 디시리얼라이즈라고 표현했던것 같은데요.

시리얼라이즈, 디시리얼라이즈는 개발자가 하는건 아니구요...
단지 Serializable 인터페이스를 구현해 줘야 하는데 이게 구현해야할 메소드가 하나도 없습니다.

그리고 시리얼라이즈 가능한 객체도 제한이 있습니다.
기본타입, 시리얼라이저블한 클래스만으로 구성이 되어야 합니다.
물론 이렇게 시리얼라이즈가 불가능한 것들이나 시리얼라이즈가 안되었으면 하는것들을 시리얼라이즈/디시리얼라이즈에서 제외시키는 방법도 있지만요...

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

댓글 달기

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