基于Linux Socket 函数实现能够进行TCP和UDP传输的服务器功能模块。
该IP为以太网的API库,提供了服务器端的收发功能,支持TCP/UDP。
无
l 结构体设计
1. Struct ETHERNET的结构来存储传入的网络传输配置参数(协议类型,主机地址以及侦听端口号)以及socket文件描述和收发缓存等信息
typedef struct ETHNET{ dll_t node; devClass class; ETH_PRO protocol;//tcp or udp int sock;//server socket int clientSock;//client socket struct sockaddr_in addr; int port;//tcp/udp port char ipaddr[16];//the local ip address int flag; char * buff;//buffer to read/write int32 buffMaxLen; int32 buffRealLen; }objEthnet; 2. |
l 主要函数说明
函数原型 | objEthnet * ethnet_open( int port, int32 buffLen) |
功能描述 | 创建并初始化一个以太网设备。 |
输入参数 | int port:以太网端口; int32 buffLen:数据缓冲区大小; |
输出参数 | 无 |
全局变量值的变化 | 无 |
返回值 | 以太网设备对象指针 |
函数原型 | STATUS ethnet_get(objEthnet * obj) |
功能描述 | 读取以太网设备数据。 |
输入参数 | objEthnet * obj:以太网设备对象指针
|
输出参数 | objEthnet * obj:以太网设备对象指针 |
全局变量值的变化 | 无 |
返回值 | OK-成功 ERROR-失败 |
函数原型 | STATUS ethnet_put(objEthnet * obj) |
功能描述 | 写入数据到以太网设备。 |
输入参数 | objEthnet * obj:以太网设备对象指针
|
输出参数 | objEthnet * obj:以太网设备对象指针 |
全局变量值的变化 | 无 |
返回值 | OK-成功 ERROR-失败 |
函数原型 | STATUS ethnet_close(objEthnet * obj) |
功能描述 | 写入数据到以太网设备。 |
输入参数 | objEthnet * obj:以太网设备对象指针
|
输出参数 | 无 |
全局变量值的变化 | 无 |
返回值 | OK-成功 |
无
基于API实现能够测试以太网控制器作为服务器端收发数据的测试程序
int ethnettest(int argc, char **argv) { STATUS ret = OK; int i = 0,j=0; ETH_PRO protocol = 0; char * pro = NULL; int error = 0; int result = PASS; char *sendbuff; char *recvbuff; int bufflen = 0; uint32 count = 0; int port = 0; objEthnet * pEthnet = NULL;
pEthnet = ethnet_open(protocol, “127.0.0.1”, port, 1024); if(NULL == pEthnet) { ret |= ERR_INIT_ETHNET; OUT_MSG("init udp error\n"); result = FAIL; goto QUIT; } OUT_MSG("test Ethnet start\n");
for(i = 0; i < count;++i) { pEthnet->buffRealLen = pEthnet->buffMaxLen; if (OK == ethnet_get(pEthnet)) { OUT_MSG("receive data from %s:%s\r\n", inet_ntoa(pEthnet->addr.sin_addr), pEthnet->buff); if( !check(recvbuff, pEthnet->buff, strlen(recvbuff))) { OUT_MSG("receive[%d] data from ethnet failed.\r\n", i); result = FAIL; } /* now the server send message to client */ bufflen = strlen(sendbuff); strncpy(pEthnet->buff, sendbuff, bufflen); pEthnet->buff[bufflen] = '\0'; pEthnet->buffRealLen = bufflen+1; if (OK != ethnet_put(pEthnet)) { result = FAIL; OUT_MSG("ethnet[%d] send error.\n",i); } }else{ OUT_MSG("receive[%d] data from ethnet failed.\r\n", i); result = FAIL; } }//end for QUIT: if(PASS == result) OUT_MSG("test Ethnet PASS\n"); else OUT_MSG("test Ethnet FAIL\n"); /* Return happy */ return ret; }
|
无
好评率:100%
好评数量:0个
工作速度:5分
工作质量:5分
工作态度:5分
暂无评价
CPU/GPU ¥12000.00
CPU/GPU ¥25000.00
CPU/GPU ¥10000.00
CPU/GPU ¥30000.00
CPU/GPU ¥10000.00
CPU/GPU ¥15000.00
CPU/GPU ¥10000.00
CPU/GPU ¥10000.00
其他 ¥5000.00
其他 ¥5000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
其他 ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥10000.00
FPGA电路 ¥10000.00
FPGA电路 ¥10000.00
模拟电路 ¥10000.00
模拟电路 ¥5000.00
模拟电路 ¥5000.00
模拟电路 ¥5000.00
模拟电路 ¥10000.00
模拟电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
FPGA电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
DSP电路 ¥10000.00
CPU/GPU ¥20000.00
CPU/GPU ¥20000.00
CPU/GPU ¥20000.00
CPU/GPU ¥20000.00
CPU/GPU ¥15000.00
CPU/GPU ¥20000.00
CPU/GPU ¥18000.00
CPU/GPU ¥20000.00
其他 ¥10000.00
其他 ¥6000.00
其他 ¥2000.00
其他 ¥3000.00
其他 ¥12000.00
其他 ¥8000.00
FPGA电路 ¥5000.00
MCU电路 ¥4800.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
嵌入式 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
MCU电路 ¥50000.00
MCU电路 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥500000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00
其他 ¥50000.00