现在我是做服务器端,客户端的情况不属于我来做,公司只要求用winsock1.1版的。想问下如何判断两端是否是连通的?我现在用的是send发送给客户端,来查看返回值,来判断是否还处在连通状态,想问下,除了用SEND的方法,还可以用什么?客户端的处理情况我不太清楚,所以我怕发送send会造成一定的问题,我之前用过select来判断是否有客户请求,可是效果不是很明显,在我监视select第三个参数的时候,总是成功。。这样轮循下去非常占CPU资源一下升到60%之上,想问下达人们还有什么办法来判断两端是否连通。谢谢各位了,我也是刚刚接触通讯这块,请达人们帮帮我
关于心跳包
百度知道
http://zhidao.baidu.com/question/32992581.html?fr=ala0
比如我连续发了十个
send(sockObject,"hello",6,0);
可能在客户端那边就接到两条消息,
"hello"
"hello\0 hello\0 hello\0……"
类似的。。可是这时问题来了,我在发送文件的时候,如何告诉对方已经发完了,让客户端停止recv函数的等待?
或者说是怎么让客户的recv函数处理超时问题
如
<iq from="" to= "" type="get/result" xmlns="">
typedef struct _TcpPayload
{
char Version : 4 ; //消息的版本,0x0为1.0版本。
char MessageType : 4 ; //消息类型:
char NameLength ; //配置文件名长度
char *Name ; //配置文件名
char DataTypeHigh : 4 ; //报警类型
char DataTypeLow : 4 ; //报警类型
USHORT DataLength;
}TcpPayload;这是我们的协议要求的的字段,我给他弄成结构的形式了,问下,这样可以吗?如果可以结构体是怎么发送的?
是直接声明一个TcpPayload test;
char *buf = new char[sizeof(test)] ;
memset(buf,0,sizeof(test));
memcpy(buf,&test,sizeof(test));
send(sockObject,buf,sizeof(test),0);
这样发的过去吗?还是一个字段一个字段的发送?实在不好意思,给了那么点分,还问那么多问题。。我在追加点分看看。。麻烦高手们帮帮忙。这个项目挺急的。谢谢各位了
send的应该就是个字符串,把结构体的各个字符拼成一个字符串再发送不知道可以不
你一次发一个_TcpPayload就好了
对方肯定也是一个_TcpPayload一个_TcpPayload解析的
#pragma pack(push,1)还有那个包头包尾,能方便说个例子吗?xianglitian 方便加下我好友吗。 100161026有几块不明白的想问问。。
你还是没有理解通信协议是什么
查查相关资料吧
今天太晚了
明天上班有时间的话我看看加你一下
{
int version;
int size;
};上面这个算包头吗?
如
if(m_psockServer->Accept(*m_psockClient[msgcount]))
{
//初始化套接字pSocket
//pSocket->Init();
m_psockClient[msgcount]->Init();
AfxMessageBox("Server 连接成功");
}