lwip 的UDP 服务端怎么建立的啊?

zynh1020 2010-11-05 08:56:38
有没有哪位搞过LWIP的,UDP服务器端口是怎么建立的啊?最好给个源代码啊?
非常感谢呢
...全文
763 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
hb_haitao2009 2011-10-21
  • 打赏
  • 举报
回复
#define HostIP "192.168.100.120"
void app_tcp_client_thread(void *pvar)
{
static rt_tick_t net_off_timer;
struct hostent *host;
int sock, err,len;//,optval;
fd_set r_fd,w_fd;
struct sockaddr_in server_addr;
struct timeval timeout;
char recv_buf[100];

timeout.tv_sec = 0;
timeout.tv_usec = 50000;

for (;;)
{
while(1)
{

rt_thread_delay(RT_TICK_PER_SECOND*2);

host = gethostbyname(HostIP);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(6001);
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
sock = socket(AF_INET, SOCK_STREAM, 0);

if (sock == -1)
{
rt_kprintf("tcp_client_test: create socket fail!\r\n");

if (net_off_timer == 0)
net_off_timer = rt_tick_get();

if (rt_tick_get() - net_off_timer > 30000/10)
{
net_off_timer = 0;
lwip_close(sock);
rt_kprintf("tcp_client_test: reset socket!\r\n");
break;
}

gnet_conn = 0;
continue;
}
conn:
rt_thread_delay(RT_TICK_PER_SECOND * 30);
err = connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr));

if (err == 0)
{
rt_kprintf("tcp_client_test: connect ok!\r\n");
gnet_conn = 1;
break;
}

//rt_thread_delay(RT_TICK_PER_SECOND * 30);
}

while(1)
{
FD_ZERO(&r_fd);
FD_ZERO(&w_fd);
FD_SET(sock,&r_fd);
FD_SET(sock,&w_fd);

if (lwip_get_error(sock) != 0)
{
gnet_conn = 0;
rt_kprintf("tcp_app_client_thread: sock = %d\n",lwip_get_error(sock));
//break;
goto conn;
}

select(sock+1,&r_fd,&w_fd,NULL,&timeout);

if (FD_ISSET(sock,&r_fd))
{
if ((len = recv(sock,&recv_buf,100,0)) > 0)
{
rt_kprintf("tcp_app_client_thread: recv data len = %d,%s\r\n",len,recv_buf);
}
else
{
gnet_conn = 0;
break;
}
}
else if (FD_ISSET(sock,&w_fd))
{
len = send(sock, send_data, 64, 0);

if (len < 0)
{
rt_kprintf("tcp_app_client_thread: send data fail!\r\n");
}
}

rt_thread_delay(1);
}
}
}
hb_haitao2009 2011-10-21
  • 打赏
  • 举报
回复
#define HostIP "192.168.100.120"
void app_tcp_client_thread(void *pvar)
{
static rt_tick_t net_off_timer;
struct hostent *host;
int sock, err,len;//,optval;
fd_set r_fd,w_fd;
struct sockaddr_in server_addr;
struct timeval timeout;
char recv_buf[100];

timeout.tv_sec = 0;
timeout.tv_usec = 50000;

for (;;)
{
while(1)
{

rt_thread_delay(RT_TICK_PER_SECOND*2);

host = gethostbyname(HostIP);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(6001);
server_addr.sin_addr = *((struct in_addr *)host->h_addr);
rt_memset(&(server_addr.sin_zero), 0, sizeof(server_addr.sin_zero));
sock = socket(AF_INET, SOCK_STREAM, 0);

if (sock == -1)
{
rt_kprintf("tcp_client_test: create socket fail!\r\n");

if (net_off_timer == 0)
net_off_timer = rt_tick_get();

if (rt_tick_get() - net_off_timer > 30000/10)
{
net_off_timer = 0;
lwip_close(sock);
rt_kprintf("tcp_client_test: reset socket!\r\n");
break;
}

gnet_conn = 0;
continue;
}
conn:
rt_thread_delay(RT_TICK_PER_SECOND * 30);
err = connect(sock, (struct sockaddr *)&server_addr, sizeof(struct sockaddr));

if (err == 0)
{
rt_kprintf("tcp_client_test: connect ok!\r\n");
gnet_conn = 1;
break;
}

//rt_thread_delay(RT_TICK_PER_SECOND * 30);
}

while(1)
{
FD_ZERO(&r_fd);
FD_ZERO(&w_fd);
FD_SET(sock,&r_fd);
FD_SET(sock,&w_fd);

if (lwip_get_error(sock) != 0)
{
gnet_conn = 0;
rt_kprintf("tcp_app_client_thread: sock = %d\n",lwip_get_error(sock));
//break;
goto conn;
}

select(sock+1,&r_fd,&w_fd,NULL,&timeout);

if (FD_ISSET(sock,&r_fd))
{
if ((len = recv(sock,&recv_buf,100,0)) > 0)
{
rt_kprintf("tcp_app_client_thread: recv data len = %d,%s\r\n",len,recv_buf);
}
else
{
gnet_conn = 0;
break;
}
}
else if (FD_ISSET(sock,&w_fd))
{
len = send(sock, send_data, 64, 0);

if (len < 0)
{
rt_kprintf("tcp_app_client_thread: send data fail!\r\n");
}
}

rt_thread_delay(1);
}
}
}
rickys2080 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 chentao_110 的回复:]

我也要关注呢 楼上的能否跟我联系下 一起学习 我有开发板 神舟的 99252598 qq
[/Quote]
好啊
涛哥110 2011-08-01
  • 打赏
  • 举报
回复
我也要关注呢 楼上的能否跟我联系下 一起学习 我有开发板 神舟的 99252598 qq
rickys2080 2011-07-24
  • 打赏
  • 举报
回复
最近我也在搞这个
zynh1020 2010-11-08
  • 打赏
  • 举报
回复
大家说说 如果TCP服务器通信正常,那么TCP的客户端算不算成功了

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧