TI的大神们,帮忙看看,我的C6748板子上程序是这样的
void echo_init(void)
{
struct tcp_pcb *pcb;
pcb = tcp_new();
tcp_bind(pcb, IP_ADDR_ANY, ECHO_SERVER_PORT);
pcb = tcp_listen(pcb);
/* initialize callback arg and accept callback */
tcp_arg(pcb, pcb);
//只有客户端连接以后,才会执行echo_accept
tcp_accept(pcb, echo_accept);
}
当与PC上的客户端建立连接后 echo_accept()会被调用
err_t echo_accept(void *arg, struct tcp_pcb *pcb, err_t err)
{
// UARTPuts("echo_accept().......................................\r\n", -1);
char i=0;
LWIP_UNUSED_ARG(err);
/* Decrease the listen backlog counter */
tcp_accepted((struct tcp_pcb_listen*)arg);
tcp_setprio(pcb, ECHO_TCP_PRIO);
/* Set up the various callback functions */
// tcp_recv(pcb, echo_recv);//在这里不发生数据,而是在 tcp_sent(pcb, send); 中的send把数据发送出去,在这里将接收到的数据保存
tcp_err(pcb, NULL);
// tcp_poll(pcb, NULL, ECHO_POLL_INTERVAL);
// 仿照echo_send_data()写一个发送函数
// err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len))
//客户端连接以后,并没有执行sent函数
tcp_sent(pcb, NULL);
//实现一个发送函数,看对方是否能够接受
for( i=0;i<4;i++)
{tcp_write(pcb, mydata, MAX_SIZE , TCP_WRITE_FLAG_COPY);
tcp_output(pcb);}
return ERR_OK;
}
可是在客户端显示只接收到一次tcp_write()发送的数据,是 mydata[MAX_SIZE], 即4K大小,这是为什么呢
在VC中编写的client程序,用于接收的部分程序如下
while (1)
{
num = recv(ConnectSocket, temp, DEFAULT_BUFLEN, 0);
if(num == 0)
break;
fwrite(temp, 1, num, fp);
}
按照网上的帖子blog.csdn.net/.../42121507试了,还是不行啊