forked from xuos/xiuos
fixed the bug that updating ip address and TCP recv fault
This commit is contained in:
@@ -48,7 +48,7 @@ static void tcp_recv_demo(void *arg)
|
||||
{
|
||||
lw_print("tcp_recv_demo start.\n");
|
||||
|
||||
int socket_fd = -1;
|
||||
int fd = -1;
|
||||
char *recv_buf;
|
||||
struct sockaddr_in tcp_addr, server_addr;
|
||||
int recv_len;
|
||||
@@ -63,8 +63,8 @@ static void tcp_recv_demo(void *arg)
|
||||
goto __exit;
|
||||
}
|
||||
|
||||
socket_fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (socket_fd < 0)
|
||||
fd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (fd < 0)
|
||||
{
|
||||
lw_print("Socket error\n");
|
||||
goto __exit;
|
||||
@@ -75,7 +75,7 @@ static void tcp_recv_demo(void *arg)
|
||||
tcp_addr.sin_port = htons(LOCAL_PORT_SERVER);
|
||||
memset(&(tcp_addr.sin_zero), 0, sizeof(tcp_addr.sin_zero));
|
||||
|
||||
if (bind(socket_fd, (struct sockaddr *)&tcp_addr, sizeof(struct sockaddr)) == -1)
|
||||
if (bind(fd, (struct sockaddr *)&tcp_addr, sizeof(struct sockaddr)) == -1)
|
||||
{
|
||||
lw_print("Unable to bind\n");
|
||||
goto __exit;
|
||||
@@ -87,15 +87,15 @@ static void tcp_recv_demo(void *arg)
|
||||
while(1)
|
||||
{
|
||||
memset(recv_buf, 0, TCP_BUF_SIZE);
|
||||
recv_len = recvfrom(socket_fd, recv_buf, TCP_BUF_SIZE, 0, (struct sockaddr *)&server_addr, &addr_len);
|
||||
lw_print("Receive from : %s\n", inet_ntoa(server_addr.sin_addr));
|
||||
lw_print("Receive data : %s\n\n", recv_buf);
|
||||
sendto(socket_fd, recv_buf, recv_len, 0, (struct sockaddr*)&server_addr, addr_len);
|
||||
recv_len = recvfrom(fd, recv_buf, TCP_BUF_SIZE, 0, (struct sockaddr *)&server_addr, &addr_len);
|
||||
lw_pr_info("Receive from : %s\n", inet_ntoa(server_addr.sin_addr));
|
||||
lw_pr_info("Receive data : %s\n\n", recv_buf);
|
||||
sendto(fd, recv_buf, recv_len, 0, (struct sockaddr*)&server_addr, addr_len);
|
||||
}
|
||||
|
||||
__exit:
|
||||
if (socket_fd >= 0)
|
||||
closesocket(socket_fd);
|
||||
if (fd >= 0)
|
||||
closesocket(fd);
|
||||
|
||||
if (recv_buf)
|
||||
free(recv_buf);
|
||||
@@ -116,11 +116,11 @@ void tcp_socket_recv_run(int argc, char *argv[])
|
||||
|
||||
ETH_BSP_Config();
|
||||
lwip_config_tcp(lwip_ipaddr, lwip_netmask, lwip_gwaddr);
|
||||
sys_thread_new("tcp_recv_demo", tcp_recv_demo, NULL, 4096, 25);
|
||||
sys_thread_new("tcp_recv_demo", tcp_recv_demo, NULL, 4096, 15);
|
||||
}
|
||||
|
||||
SHELL_EXPORT_CMD(SHELL_CMD_PERMISSION(0) | SHELL_CMD_TYPE(SHELL_TYPE_CMD_MAIN) | SHELL_CMD_PARAM_NUM(3),
|
||||
TcpSocketRecv, tcp_socket_recv_run, TCP recv echo);
|
||||
TCPSocketRecv, tcp_socket_recv_run, TCP recv echo);
|
||||
|
||||
static void tcp_send_demo(void *arg)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user