|
发表于 2011-1-26 13:25:19
|
显示全部楼层
struct uip_udp_conn *myudp_conn;
void myudp_init(void)
{
uip_ipaddr_t ipaddr;//定义IP类型变量
uip_ipaddr(ipaddr, 192,168,1,116); //远程IP为192.168.1.116
if(myudp_conn != NULL)
{
uip_udp_remove(myudp_conn);//如果连接已经建立,则删除之
}
myudp_conn = uip_udp_new(&ipaddr, HTONS(1000));//建立到远程ipaddr,端口为1000的连接
if(myudp_conn != NULL)
{
uip_udp_bind(myudp_conn, HTONS(2000));//绑定本地端口为2000,也就是2000-->1000 发数据
}
}
void myudp_send(char *str,short n)
{
char *nptr;
nptr = (char *)uip_appdata;
memcpy(nptr, str, n);
uip_udp_send(n); //发送n个数据
}
void newdata()
{
char *nptr;
short len;
len = uip_datalen();//读取数据长度
nptr = (char *)uip_appdata; //取得数据起始指针
if(len<4)myudp_send("Please check the command!\n",26);
else if(strncmp(nptr,"getname",7)==0)myudp_send("My name is Johnny.\n",19);
else myudp_send("Unkown command!\n",16);
}
/*---------------------------------------------------------------------------*/
/** \internal
* The main UDP function.
*/
/*---------------------------------------------------------------------------*/
void myudp_appcall(void)
{
if(myudp_conn->rport == HTONS(1000))
{
/*if(uip_poll()) {
myudp_send("hello\n",6);//定时时间到,发hello
}*/
if(uip_newdata()) //如果指定IP的指定端口发来数据
{
newdata();
}
}
}
最后需要定义一个宏
#define UIP_UDP_APPCALL myudp_appcall
放在uip.h |
|