c++ 객체 직렬화 관련 질문2

balgarac1의 이미지

class CPacketHeader
{
public:
	CPacketHeader();
	virtual ~CPacketHeader();
 
	virtual void CShowPacket() = 0;
};
 
 
class CLoginAuthReqPacket : CPacketHeader
{
public:
	CLoginAuthReqPacket();
	~CLoginAuthReqPacket();
 
	void CShowPacket();
private:
	UB2 msg_type;
	SCHAR db_user[33];
	SCHAR password[33];
	SCHAR program_name[33];
	SCHAR db_name[33];
 
};

protobuf 에 관련해서 찾아보다가 제가 짠 클래스는 보내줄 수 없는 것 같아서 질문 드립니다.
protobuf로 멤버 함수까지 있는 클래스를 직렬화 시켜서 네트워크 상으로 보내줄 수 있는 방법이 있나요??

jick의 이미지

Protocol buffer에 RPC를 지원하는 기능이 있기는 있습니다.

> https://developers.google.com/protocol-buffers/docs/proto?hl=en#services

하지만 별로 쓰는 사람이 없는 걸로 알고 있고, 이걸 쓰려면 프로그램 전체 구조를 프로토콜 버퍼를 중심으로 뜯어고쳐야 하기 때문에 원하시는 동작을 하지는 않으리라 봅니다.

프로토콜 버퍼는 .proto 파일을 작성해서 클래스를 따로 정의해야 합니다. (그러면 자동으로 C++ 클래스를 만들어줍니다.) C++에서 사용자가 정의한 클래스를 인식하는 기능은 없습니다.

익명 사용자의 이미지

혹시 정확히 어떤 일을 하는 프로그램을 만들고 싶으신 건가요? 직렬화된 객체를 사용한다가 진짜로 해결하고 싶은 문제의 정답이 아닐 수도 있습니다

balgarac1의 이미지

답변 감사드립니다.

클라이언트에서 메세지를 치면 프록시 게이트웨이를 거쳐서 서버로 갔다가 서버에서 응답해주는 것을

프록시 게이트웨이로 보내고 다시 프록시 게이트웨이가 클라이언트에게 응답을 전송해주는 프로그램을 만들고 있습니다.

중간에 프록시 게이트웨이만 c++이고 클라이언트와 서버는 c입니다. 이렇게 짠 것은 요구사항이 그랬기 때문입니다....

로그인 할 때나 메세지를 보낼 때 가변길이의 패킷을 주고받으면서 메세지를 송 수신하는데

게이트웨이에서 지금 있는 6개 정도의 메세지 타입을 다형성을 적용시켜서 처리하라는 이상한 요구?를 받았습니다.

그러다보니 객체를 전송해야 하는 상황이 되었고 방법을 찾던 중이었습니다...

하지만 지금은 이 방법은 아닌 것 같다는 생각이 듭니다...

댓글 달기

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