【发布时间】:2017-01-10 21:04:04
【问题描述】:
我遇到了一个我无法真正解决的问题,所以我重新启动了。 我遇到了数据封装的问题,或者更具体的没有封装的问题。所以在我发现封装有用之后,我开始重写代码。
现在我遇到了另一个问题。不知何故,我的 send 和 recv 调用并没有像我希望的那样工作。
这是我发送的部分:
char to_send[] = "hello. I am the Data.";
// get size of data
int len = strlen(to_send);
char slen[len];
sprintf(slen,"%d",len);
printf("%s\n",slen);
// send size of data
if(send(comm_fd,slen,len,0)<0){perror("Error on send"); exit(1);}
// send data
if(send(comm_fd,to_send,len,0)<0){perror("Error on send"); exit(1);}
这里是我recv的部分:
// getting size of bytes to recv
char buf[1000];
bzero(buf,1000);
int rec = recv(comm_fd, buf, 100,0);
printf("rec\n: %i",rec);
printf("buf\n: %s\n", buf);
int buffsize;
buffsize = atoi(buf);
bzero(buf,1000);
printf("buffsize: %i\n",buffsize);
// recv the bytes
bzero(buf,1000);
rec = recv(comm_fd, buf, buffsize,0);
printf("rec\n: %i",rec);
printf("%s",buf);
所以我现在的问题是:我可以接收下一个数据的大小并打印它。但是数据本身没有显示出来。
有人可以帮助我吗?我认为我做错了主要事情(我是 C 和网络编程的新手)
提前致谢
【问题讨论】:
-
slen的大小不是len
标签: c sockets networking send recv