如何通过TCP套接字检测STX?

时间:2018-11-14 12:30:13

标签: c++ tcp ros

我有一个服务器和一个客户端,它们通过TCP相互通信。

在客户端,我正在尝试在发送一些数据之前发送STX。当我在Wireshark上嗅探TCP数据包时,我确实看到了STX,并且数据也正在发送。因此,我在服务器端尝试重新构造消息存在一些问题。

在服务器端,我正在尝试像这样读取STX:

while(ros::ok()) {
ss.str(std::string()); 
bzero(buffer,256);
n = read(newsockfd,buffer,255); //rcv Buffer
if (n < 0) error("ERROR reading from socket");
ss << buffer;
const char stx = '\x02';

std::string stxstr;
stxstr.push_back(stx);
std::string identifier;
std::stringstream::pos_type pos = ss.tellg();
ss>>identifier;

if(identifier == stxstr){
ROS_INFO("Found STX");
}
else {
ss.seekg(pos); 
}


n = write(newsockfd,"Recd",4); //ACK to client
if (n < 0) error("ERROR writing to socket");}

但是我无法从字符串流中获取STX。我在做什么错了?

0 个答案:

没有答案