📄 example1.c
字号:
#include <stdio.h>
#include "uip.h"
#include "uipopt.h"
#include "uip_arch.h"
#include "example1.h"
#include "string.h"
unsigned char sbufOut[1462];
data unsigned int sbufLen=0;
bit sbufBit=1;
extern bit BitServer;
u16_t RemoteIpAddr[2]={ (210<<8) + 41, (232<<8) + 143 };
u16_t RemoteTcpPort=HTONS(1236);
u16_t LocalTcpPort=HTONS(1234);
void example1_init(void)
{
/* if( BitServer )
uip_listen( LocalTcpPort );
else
uip_connect( RemoteIpAddr, RemoteTcpPort );
*/
struct uip_udp_conn *udp_conn;
u16_t ipaddr[2];//定义IP类型变量
uip_ipaddr(ipaddr, 192,168,1,168); //远程IP为210.29.104.88
udp_conn = uip_udp_new(&ipaddr, HTONS(1005));//建立到远程ipaddr,端口1235的连接
}
/*******************************************
added by ye 2008.12.11
********************************************/
/*---------------------------------------------------------------------------*/
/** \internal
* The main UDP function.
*/
/*---------------------------------------------------------------------------*/
void udp_appcall(void)
{
// char string1[]="hello! ";
// char *nptr;
// nptr=(char *)uip_appdata;
if(uip_poll()|| (sbufBit) ) {
// memcpy(nptr,string1,8);
// uip_udp_send(8);
// udp_send("hello\n",6);//定时时间到,发hello
// BufUartStr( uip_appdata, uip_len );
// printf("\nUDP poll!\n");
sbufLen = 0;
while(BufUartRtest())
{
sbufOut[sbufLen++] = BufUartRin();
if( sbufLen >= 1460 ) break;
}
if( sbufLen ){
BufUartStr( sbufOut,sbufLen );
memcpy(uip_appdata,sbufOut,sbufLen);
BufUartStr( uip_appdata,sbufLen );
uip_udp_send(sbufLen);
sbufBit = 0;
}
else
sbufBit = 1;
}
if(uip_newdata()) //如果指定IP的指定端口发来数据
{
// memcpy(nptr,string1,8);
//uip_appdata=&string1;
uip_udp_send(uip_len);
BufUartStr( uip_appdata, uip_len );
// newdata();
// udp_send(nptr,len);
// BufUartStr( uip_appdata, uip_len );
// printf("\nUDP received !\n");
}
}
/*******************************************
add end!
********************************************/
void example1_app(void)
{
if( uip_connected() )
{
/*
if( (uip_conn->lport==HTONS(LocalTcpPort)) )
{
BufUartStr("\rS Link\r", 8 );
}
else
{
BufUartStr("\rC Link\r", 8 );
}
*/
return;
}
if(uip_newdata()) //recive new data
{
/*
if( (uip_conn->lport==HTONS(LocalTcpPort)) )
{
BufUartStr("\rServer\r", 8 );
}
else
{
BufUartStr("\rClient\r", 8 );
}
*/
BufUartStr( uip_appdata, uip_len );
}
if( uip_poll() || uip_acked() || (sbufBit) ) //can send new data
{
sbufLen = 0;
while(BufUartRtest())
{
sbufOut[sbufLen++] = BufUartRin();
if( sbufLen >= 1460 ) break;
}
if( sbufLen )
{
uip_send( sbufOut, sbufLen );
sbufBit = 0;
}
else
sbufBit = 1;
}
if( uip_rexmit() ) //retransmit old data
{
uip_send( sbufOut, sbufLen );
}
if( uip_timedout() || uip_closed() || uip_aborted())
{
/*
if(uip_closed())
BufUartStr("\rClosed ", 8);
else
BufUartStr("\rTimedout", 9);
*/
/*
if( uip_conn->lport == HTONS(LocalTcpPort) )
{
//BufUartStr(" Server\r", 8);
uip_unlisten( LocalTcpPort );
uip_listen( LocalTcpPort );
}
else
{
//BufUartStr(" Client\r", 8);
uip_connect( RemoteIpAddr, RemoteTcpPort );
}
*/
if( BitServer )
{
//BufUartStr(" Server\r", 8);
uip_unlisten( LocalTcpPort );
uip_listen( LocalTcpPort );
}
else
{
//BufUartStr(" Client\r", 8);
uip_connect( RemoteIpAddr, RemoteTcpPort );
}
}
/*
if(uip_aborted())
{
BufUartStr("\rAborted\r", 9);
}
*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -