社区
驱动开发/核心开发
帖子详情
lwip 的UDP 服务端怎么建立的啊?
zynh1020
2010-11-05 08:56:38
有没有哪位搞过LWIP的,UDP服务器端口是怎么建立的啊?最好给个源代码啊?
非常感谢呢
...全文
802
6
打赏
收藏
lwip 的UDP 服务端怎么建立的啊?
有没有哪位搞过LWIP的,UDP服务器端口是怎么建立的啊?最好给个源代码啊? 非常感谢呢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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的客户端算不算成功了
物联网之轻量级TCP/IP协议栈——
Lwip
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
Zynq 基于
Lwip
2.0 实现ping 功能
基于
lwip
实现ping功能,用于zynq-7000项目开发。
在没有操作系统的单片机上如何实现tcp或
udp
通讯,附基于
lwip
协议栈的tcp框架代码
你可以将这些协议栈集成到你的单片机项目中,并通过编写适当的驱动程序来与你的网络硬件进行交互。在没有操作系统的单片机上实现TCP或
UDP
通讯是一个具有挑战性的任务,因为TCP/
UDP
协议栈通常需要操作系统的支持来进行网络设备的驱动、内存管理、线程调度等复杂操作。最后,由于单片机资源和处理能力的限制,实现TCP/
UDP
通讯可能会面临一些挑战,如内存管理、性能优化等问题。但是,你需要确保串口转网络模块与你的网络环境和需求兼容,并仔细阅读其使用说明和配置方法。// 调用
lwIP
的轮询函数来处理网络事件。
GD32F407之
LWIP
的移植和
UDP
_TCPC测试
一、
LWIP
的移植 1、
Lwip
内核文件的移植参考正点原子的STM32F407无操作系统的移植,如图工程文件目录结构 2、添加arch文件 由于不使用RTOS实时系统所以,(cc.h、cpu.h、perf.h、sys_arch.h、sys_arch.c)基本不使用,所以也没有正点原子里面的
Lwip
_Arch文件夹,只是简单地实现了获取时间函数sys_now();代码在
lwip
_comm.c中。 3、添加
LWIP
通用文件
Lwip
_App为通用文件夹,里面包含五个文件夹
lwip
_comm (lw
LWIP
Sokect
UDP
组播
1 Socket编程-
udp
服务端
和客户端通信 (1).
建立
一个套接字(Socket) (2).绑定服务器端IP地址及端口号--服务器端 (3).通过SendTo()方法向指定主机发送消息 (需提供主机IP地址及端口) (4).通过ReciveFrom()方法接收指定主机发送的消息 2
UDP
信息传递的方式分三类 ① 单播Unicast:是客户端与服务器之间的点...
驱动开发/核心开发
21,620
社区成员
21,709
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章