我有一个服务器和一个客户端,它们通过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。我在做什么错了?