我正在制作一个我必须实施Stop-and-Wait协议的项目。我试图将帧发送到另一台计算机,但我发送的功能不起作用。代码如下。如果您需要查看更多代码,请告诉我们。我刚刚在这里写到了对这个问题最重要的想法。
这是我发送帧的功能,它应该从文件中读取信息并将其拆分成帧,并将帧的其他信息添加到每个帧。这部分工作得很好,问题是当我尝试逐帧发送时,它只是没有做到。如果我打印temp,它打印很好。
void sendFrame()
{
char *buf;
char* filename = "mytext.txt";
struct stat tr;
stat(nomefich, &tr);
int size = tr.st_size;
FILE *fi = fopen(filename,"rb");
buf = malloc(size);
fread(buf,size,1,fi);
fclose(fi);
//printf("%s",buf);
char *buffer=(char *)malloc(256*sizeof(char));
char *source=buf;
char *dst=buffer;
char *src=source;
char *end=source+strlen(source);
while(src<=end)
{
strncpy(dst,src,255);
src +=255;
dst[256]='\0';
char *temp;
temp=dados(dst);
char *confir;
do{
char *frameTemp;
printf("%s",temp);
send(temp);
confir=getConf();
}while(confir!="TRUE");
}
}
这是我发送数组的函数发送:
void send(char *frame)
{
int port;
port=open_port();
sendData(frame,strlen(frame),port);
close(port);
}
这是sendData(),它将逐个字符的数组发送到串口:
void sendData(char *buffer, int size, int port)
{
int aux = 0;
while(aux != size){
write(port, &buffer[aux], sizeof(char));
aux ++;
}
}
函数send()和sendData()似乎工作正常。问题在于sendFrame(),我认为