您的位置:首页 > 编程语言

socket编程_给它做得这么简单

2012-08-15 08:17 316 查看
下面是我用beaglebone 做得一个UDP发送接收程序

在ti的官网里面提供的裸跑程序里面其中关于以太网部分已经移植好了Lwip

所以,在它上面写网络程序真的很方便。

昨天写了一个,程序写好了,本来以为要调试很久,所以迟迟不肯动手。今早,插上去,发现一点错误都没有。真是幸事。

源代码:

int main(void)

{

unsigned char macArray[6];

unsigned int ipAddr = 0;

volatile unsigned int cnt = 3;

struct udp_pcb *UdpPcb;

struct ip_addr ipaddr;

struct pbuf *p;

MMUConfigAndEnable();

/* Enable IRQ for ARM (in CPSR)*/

IntMasterIRQEnable();

IntAINTCInit();

DelayTimerSetup();

/* Set up the UART peripheral for Standard Input/Output operation.*/

UARTStdioInit();

CPSWPinMuxSetup();

CPSWClkEnable();

/* Chip configuration MII selection */

EVMPortMIIModeSelect();

/* Get the MAC address */

EVMMACAddrGet(0, macArray);

AintcCPSWIntrSetUp();

UARTPuts("Acquiring IP Adress... \n\r" , -1);

while(cnt--)

{

/* Initialze the lwIP library, using DHCP.*/

#if STATIC_IP_ADDRESS

ipAddr = lwIPInit(0, macArray, STATIC_IP_ADDRESS, 0, 0, IPADDR_USE_STATIC);

#else

ipAddr = lwIPInit(0, macArray, 0, 0, 0, IPADDR_USE_DHCP);

#endif

if(0 != ipAddr)

{

break;

}

}

UARTPuts("EVM IP Address Assigned: ", -1);

IpAddrDisplay(ipAddr);

/* starting the UDP connection */

p = pbuf_alloc(PBUF_RAW,sizeof(UDPData),PBUF_RAM);

p->payload=(void *)UDPData;

IP4_ADDR(&ipaddr,192,168,1,102); //远程主机地址

UdpPcb = udp_new();

udp_bind(UdpPcb,IP_ADDR_ANY,4000); //绑定本地IP地址

udp_connect(UdpPcb,&ipaddr,5000); //连接远程主机

udp_recv(UdpPcb,UDP_Receive,NULL);

delay(400000);

udp_send(UdpPcb,p);

/* Initialize the sample httpd server. */

// echo_init();

/* Loop forever. All the work is done in interrupt handlers. */

while(1)

{

; /* Perform nothing */

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: