关于socket网络编程的问题,急急急!!
我是在linux下写的服务器代码,当接收到客户端发送过来的信息后,怎样判定是一个报文还是心跳包?如果是心跳包要怎么回复消息给客户端呢?...
我是在linux下写的服务器代码,当接收到客户端发送过来的信息后,怎样判定是一个报文还是心跳包?如果是心跳包要怎么回复消息给客户端呢?
展开
3个回答
展开全部
心跳包协议要自己约定,并不是说固定的
当你的socket读到一段信息之后,如果符合你的心跳包格式,然后就用处理心跳包的方法去处理,如果不是则用处理业务的方法去处理。
回复客户端的也是自己约定的,没有什么是必须怎样怎样的。
不过心跳包的大小尽量的少吧,毕竟要占用服务器资源
当你的socket读到一段信息之后,如果符合你的心跳包格式,然后就用处理心跳包的方法去处理,如果不是则用处理业务的方法去处理。
回复客户端的也是自己约定的,没有什么是必须怎样怎样的。
不过心跳包的大小尽量的少吧,毕竟要占用服务器资源
更多追问追答
追问
也就是在用recv接收到信息之后,然后做一个内容判断吗?如果符合心跳包的话就按照心跳包的内容去回复,如果不是的话就按照业务处理的内容去回复吗?是不是回复都是用send?请别笑话啊,我才刚刚接触!!谢谢了!!
追答
recv send?,不是InputStream和OutputStream么
对,要根据得到的信息去判断用户的请求,比如说规定一个byte为数据流开始标志,第二个byte标志数据流请求类型,是心跳请求还是业务请求
只是举个例子
展开全部
包格式中定义是否心跳。至于是否要回复,看你的系统的定义,最好是回复一下。
追问
麻烦可以稍微清楚一点吗?我才接触socket,还比较模糊。我现在遇到的问题主要是 客户端需要发送XML格式的报文给我处理,然后我返回处理后的结果给他;同时客户端又会发送心跳包过来,我该怎样判断接收的是报文还是心跳包呢?判断了才可以分类给予返回不同的信息。
追答
通俗地,整个通讯你自己定义的,你说要怎么样,那就要怎么样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关键看协议, 不同的指令码不一样,根据指令码识别时什么指令,然后处理就行了,客户端和服务器端公用一套协议的打包解包代码, 每个指令都定义发送和回应两个指令码,发送的时候用发送指令, 服务器根据发送指令识别出来后, 根据回应指令的协议打包发送.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询