⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example1.c

📁 移植到51单片机的UIP代码
💻 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 + -