5-8万年薪顶级嵌入式,京沪深就业地 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

如何定义自己的协议?急!!!!!!!!!高分!

楼主tlhad()2006-01-14 09:53:06 在 VC/MFC / 网络编程 提问

我现在遇到难题。我的想法是开发一个c/s模式程序,程序功能是:能对提取数据库记录,然后对数据打包,然后发送。当然通讯的前期,有三路握手,再就是用户和密码验证。谁能先告诉我怎么定义一个自己的协议。问题解决,有更高分。 问题点数:100、回复次数:13Top

1 楼ljmanage(过客)回复于 2006-01-14 11:00:45 得分 0

你这个要在服务器端有个软件接收客户端指令,你可以用Socket实现,具体里面的协议你自己定,比如说,开始几个字节是机器名啊,什么的,也可以直接将一个结构体发过去,服务器端同样的用结构体接收下来,然后在对里面的数据进行分解作具体操作Top

2 楼tlhad()回复于 2006-01-14 11:26:32 得分 0

能讲详细一点吗?或者给一小段例子代码。问题解决有高分,不胜感激啊!你是指当一个用户登陆进来以后,在发个数据结构过去,然后客户端再把用户和密码发过来,然后我读结构信息,然后判断是否成功。如果成功,我再回复登陆成果。客户端收到登陆成功后,开始发送信息,服务器端也开始转发信息?请回复。继续讨论。Top

3 楼CW_Wei(朗 月)回复于 2006-01-14 12:01:20 得分 0

协议不就是自己规定某些特殊信息的意义么Top

4 楼kugou123(酷狗)(彪悍的人生,不需要解释 www.xiaozhou.net)回复于 2006-01-14 12:02:16 得分 0

中间的数据传送,你可以自己构建字节数组,比如第1~第n字节,存放用户名,第n+1~第n+m字节,存放密码。用户名和密码也可以加密。算法你可以自己选。Top

5 楼DrSmart(斯玛特)回复于 2006-01-14 12:25:35 得分 0

你可以搜索一下   密聊   的源代码Top

6 楼tlhad()回复于 2006-01-14 14:04:07 得分 0

数据从客户端出来是这样的--加TCP头+数据->加IP头+TCP头+数据-》最后封装成桢,发送出去。然后服务器端解包,再到应用程度读取数据。这个过程需要我自己操作吗?难道,那些验证信息是放在数据里面。而另一方只是取这个结构数据里的一个成员来验证?比方:struct   LOGIN_USE  
  {    
    CString   u_name,//需验证的客户端用户名  
    CString   u_pwd,//密码  
    char[1024]   content,//保存信息主内容  
  };    
  这样简单定义。可以发送这中结构数据吗?  
  请高手指点。不胜感激。尽管发言,虚心接受。谢谢!~@~Top

7 楼Victorianism(风尚)回复于 2006-01-15 15:11:40 得分 0

首先你要定义一组消息命令,用这些消息来识别是一个什么样的操作,在服务端取出这个消息然后跟据这些消息用不同的结构去收取就行了  
  例如:  
  #define   MSG_LOGIN               0x001  
  #define   MSG_LOGOUT             0x002  
  #define   MSG_CHANGE_PWD     0x003  
  ....  
  然后定义一个结构存放一个数据信息,数据的收发都用这个结构来处理  
  例如:  
  struct     _DATAPACKET  
  {  
        int   version;       //   协议版本,为了兼容不同版本的客户服务端应该跟据这个版本来处理  
        int   message;       //   保存这个消息命令  
        int   uid;               //   用户ID  
        int   verify;         //   校验码,如果客户需要收到服务端的ACK(消息应答),跟据这个校码来判断  
        int   length;         //   实际数据长度  
        char   buffer[1024];   //   缓冲区  
         
  };  
   
  用户登录结构:  
  struct   _LOGIN  
  {  
        char   encrypt[16];     //   加密键  
        char   password[32];   //   经过的密码  
  };  
   
  ....  
   
  下面来看看是怎样处理客户端服务端对话的:  
  客户端如下:  
  struct   _DATAPACKET   stPack;  
  struct   _LOGIN   stLogin;  
  memset(&stPack,   0,   sizeof(stPack));  
  memset(&stLogin,   0,   sizeof(stLogin));  
   
  在这里可能要用strcpy()函数  
  stLogin.encrypt     =     "加密键";  
  stLogin.password   =     "你的密码";  
   
  stPack.version   =   1;  
  stPack.message   =   MSG_LOGIN;  
  stPack.uid           =   88888;  
  stPack.verify     =   xxx;                           //   这个校验码应该是一个随机数  
  stPack.length     =   sizeof(stLogin);   //   _LOGIN结构的大小,以字节为单位  
   
  //然后把_LOGIN结构封装到stPack中去  
  memcpy(&stPack.buffer,   &stLogin,   sizeof(stLogin));  
   
  //OK最后直接将_DATAPACKET这个构结发送出去就行了  
  sendto(s,   (char*)&stPack,   sizeof(stPack),   0,   ...);  
   
   
  //好了然后我们来演示在服务器端是怎样收取这个结构  
  _DATAPACKET   stPack;  
  memset(&stPack,   0,   sizeof(stPack));  
  recvfrom(s,   (char*)&stPack,   sizeof(stPack),   0,   ...);  
  int   message   =   stPack.message;  
  switch(message)  
  {  
    case   MSG_LOGIN:  
        _LOGIN   stLogin;  
        memcpy(&stLogin,   stPack.buffer,   stPack.length);  
        //   好了下面就可以去做你要做的事情了.  
        break;  
    case   MSG_LOGOUT:  
        break;  
  };Top

8 楼Victorianism(风尚)回复于 2006-01-15 15:16:30 得分 0

以上协议仅供参考,协议定义的方式可能有些不同,你可以跟据自已的需要来定义.Top

9 楼jia20003(『gloomy fish』兄弟们一个一个结婚刺激我想跳楼!)回复于 2006-01-16 12:35:23 得分 0

多看看TCP之上的应用协议如何定义和规则过滤对你肯定有  
  帮助!找点RFC文档看看吧!Top

10 楼zephyr007(道可道)回复于 2006-01-16 13:06:56 得分 0

可以使用XMLTop

11 楼leon358(骷髅在跳舞)回复于 2006-01-16 13:36:18 得分 0

能力不在裤衩的多少,看看人家--Victorianism(风尚),学习Top

12 楼0011411(爱也许是假的,可是当时的快乐是真的。)回复于 2006-01-16 15:08:08 得分 0

Victorianism(风尚)   的裤衩虽然少,但是很猛哦!!!哈哈Top

13 楼Victorianism(风尚)回复于 2006-01-16 15:13:39 得分 0

裤衩不在多,好用则行!Top

相关问题

  • 自定义协议问题
  • 如何自定义协议?
  • 如何自定义URL协议?
  • 200分,关于自定义协议,建立在TCP协议基础之上的,类似于SMTP协议,希望能帮我提供点资料.
  • snort是基于协议分析,它的入侵描述语言是啥?自己定义的嘛?
  • 急,如何在win2000下设自定义纸张?100分求解
  • 如何定义函数指针类型? 急,在线给分
  • 关于datagrid自定义分页的问题,急等,谢谢
  • 自定义控件中怎样overrides font属性?(急,给分)
  • 急!用javaapi测试自定义类的疑惑!高分相送

关键词

  • 数据
  • 协议
  • 结构
  • 客户
  • 密码
  • 用户
  • 服务器
  • 验证
  • 消息
  • 版本

得分解答快速导航

  • 帖主:tlhad

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
x 提问