利用socket进行网络传输要如何封装不同的命令,使双方都能识别这个命令?
例如,当客户登录的时候会给服务器一个登录命令,当客户退出的时候又是一个退出命令,当客户向服务器发送消息又是另一个命令,如何来区分这些不同的命令?
能不能把这些命令给封装为不同的类?但是网络传输不是要网络字节序吗,发送和接收时要怎么转换成相应的类?请给代码示例
例如,当客户登录的时候会给服务器一个登录命令,当客户退出的时候又是一个退出命令,当客户向服务器发送消息又是另一个命令,如何来区分这些不同的命令?
能不能把这些命令给封装为不同的类?但是网络传输不是要网络字节序吗,发送和接收时要怎么转换成相应的类?请给代码示例
解决方案 »
- 类的实例化报错,无穷递归结构
- 有没有办法在MFC的dialog中把excel表加进去,向excel一样实现操作。
- 打印问题->如何在不同dpi下在A4上打印实际大小(宽,高)相同的线框~~~~~
- 请问该情况会抛出什么类型的异常,怎么try,又怎么catch呢?
- 怎样使用vc++捕获传输中的网络信息
- 怎样取得CEditbox 输入的值?怎样取得CCombobox 输入的值?
- 怎么关闭当前窗口?
- 如何处理3ds文件读入到3DEditor后,部分模型易位的问题?
- 在VC中如何调用Window98下的记事本?
- Help me!!!!如何在程序中使用Outlook Express发送一封完整的邮件,而不需要用户编辑任何信息,而且自动发送完成,不用按发送按钮.
- winsock,bind调用成功,listen出问题
- 把静态链接库改为动态的链接库
简单的服务可以考虑
楼上的提议
复杂的可以参考HTTP
另外你说的类封装,我不太明白你的意思
不过可以把对象作(char*)struct 强制转换
在接受端再转换过来,不过有些语言是不支持的
DWORD len;
DWORD type;
}HEAD,*PHEAD;
typedef struct MSGCONTENT
{
HEAD head;
....
}MSG,PMSG;....
send(&msg,sizeof(MSG),0);
至于协议的设计,可以这样procname@procdata1@procdata2@....,所有解析数据都只通过一个通讯类获得即可
根据第一段命令名从工厂获得具体命令协议的处理类,处理除第一段后面的所有数据
基本上很多协议都是这么做的