开源一个,本人写的TCP服务器,求穿裤衩。
[ 本帖最后由 LingYi 于 2013-8-2 17:25 编辑 ]\n\n#include "stdio.h"#include "DSP28_Gpio.h"
#include "DSP28_SysCtrl.h"
#include "DSP28_PieCtrl.h"
#include "DSP28_PieVect.h"
#include "DSP28_InitPeripherals.h"
#include "DSP28_Timers.h"
#include "DSP28_Gpio.h"
#include "arp.h"
#include "common.h"
#include "display.h"
#include "irigb.h"
#include "dm9k_ex.h"
#include "net.h"
#include "check.h"
extern struct HostStructType Machine;
extern union NetCardUnionType uNetPack_Rx; //接收缓存
extern union NetCardUnionType uNetPack_Tx; //发送缓冲
void initNet_Inf()
{
if(vResetDM9K_EX())
{
vInitD9K_EX();
}
else
{
while(1); //网络芯片错误,两灯都不亮
}
}
void initNet(void)
{
initNet_Inf(); //先初始化网口,以便输出调试信息
}
void RecvFromNet_Ex()
{
UINT16 uiLen;
if (uiCheckNewPacket_EX()) //接收数据包
{
if (uNetPack_Rx.stEtherFrame.uiProtocol == 0x0806)//表示收到一个arp请求包
{
if(uNetPack_Rx.stArpFrame.Operation == 0X0001)//表示收到的数据包是一个ARP请求报文
{
Arp_Answer(); //ARP应答
}
else if(uNetPack_Rx.stArpFrame.Operation == 0X0002)//表示收到的数据包是一个ARP回答报文
{
;
}
}
else if(uNetPack_Rx.stEtherFrame.uiProtocol == 0x0800)//表示接收到一个IP数据包
{
if((uNetPack_Rx.stIpFrame.VersionToService & 0xf000) == 0x4000)//IP V4版本
{
if( Check_RxIpHeadCrc() ) //IP首部CRC校验,返回值恒为1.校验结果保存在 CheckFlag
{
switch(uNetPack_Rx.stIpFrame.TtlToNextP & 0x00ff)
{
case 0x01://表示收到的IP数据报为ICMP查询报文(本程序仅对PING操作进行处理)
if((uNetPack_Rx.stIcmpFrame.TypeOpt >> 8) == 0x08) //表示收到的ICMP报文是一个ping的请求包
{
Icmp_Ping_Answer();
}//对PING应答
else if((uNetPack_Rx.stIcmpFrame.TypeOpt >> 8) == 0x00)//表示收到的ICMP报文是一个ping的应答包
{
}
break;
case 0x06://IPFrame的下层协议字段为6表示下层协议为TCP,表示收到TCP报文
Tcp_Process();
break;
case 0x11://IPFrame的下层协议字段为17表示下层协议UDP,表示收到UDP报文
Udp_Process();
break;
default:
break;
}
}
}
}
}
}
开源本人写的TCP服务器,硬件平台是2812 + DM9000,仅支持局域网,所有代码均为我个人慢慢敲出来的,耗时超不多3个月,使用工具TCP IP 调试助手 ,wireshark 网络抓包工具。参考资料是TCP IP 详解卷一 卷二,仅供学习,参考。
可以支持多个TCP 服务器,目前是3个,只需要修改一个数组的 tcpip.h 里面的 muchdevice的宏即可以实现。 大家顶到100楼,就出贴源代码。(编辑说明:添了些说明。。。) {:victory:}帮顶…… 100楼。。。。 帮顶!接着定!!!!! 速度好慢哦。。。。 工程巨大呀。。。。学习中 帮顶 这么niu{:shocked:} 顶楼主。 niba 发表于 2013-8-2 17:36 static/image/common/back.gif
工程巨大呀。。。。学习中
呵呵,确实有点大。不过还不是很完整,只是能工作。 支持一个,发出来{:victory:}{:victory:} w d我顶 单身的楼主果然强大! superAFE 发表于 2013-8-2 19:52 static/image/common/back.gif
对LZ搞的这一块完全不懂,请见谅!
请问,这代码很有价值吗?要顶到100楼才肯帖出原代码? ...
其实,不用啦!明天晚上,约MM,成功了下个礼拜1,就共享。 NIC 发表于 2013-8-2 20:20 static/image/common/back.gif
单身的楼主果然强大!
伤不起啊! {:smile:}帮顶! LingYi 发表于 2013-8-2 20:52 static/image/common/back.gif
其实,不用啦!明天晚上,约MM,成功了下个礼拜1,就共享。
楼主,期待你的代码,更期待你的精彩故事!{:lol:} NIC 发表于 2013-8-2 21:08 static/image/common/back.gif
楼主,期待你的代码,更期待你的精彩故事!
太感谢了。。。。 期待学习,100楼。 顶起!100楼 才21楼,哎!大家一起加油哦 {:sweat:} 好庞大,,,玩 DSP 阿, 盖楼{:lol:}{:lol:}{:lol:} 帮顶,感觉很好。 这个还没到100楼,再帮楼主顶一下,大家一起顶阿 顶一下以表膜拜 过段时间就上传,虽然没有100层楼! mark…
顶一个… {:lol:}盖楼 本帖最后由 LingYi 于 2013-8-17 14:57 编辑
哎!虽然没有100楼,但是我还是忍了,送给需要的人。声明:代码仅供学习、研究,请不要用于商业目的,可能代码存在些BUG,请使用的时候小心,如果出现问题,我个人不承担任何责任。万分感写你能够反馈BUG给我,谢谢! 友情帮顶呀.
不过自己没做过TCP/IP方面的东西,不了解呀 楼主好人一个!! {:lol:}怎么那么复杂,我的TCP服务器2行代码都不到 retime 发表于 2013-8-19 10:51 static/image/common/back.gif
怎么那么复杂,我的TCP服务器2行代码都不到
你用的别人的吧!自己调用一下就是了? 那是一定要顶! 谢楼主分享 {:loveliness:}{:loveliness:} 这种东西不开源最后都得压箱底 wswh2o 发表于 2013-11-11 20:41 static/image/common/back.gif
这种东西不开源最后都得压箱底
哎!目前也没有什么用处啦 43楼了,搬砖盖楼 {:victory:}頂起 精神可嘉,值得学习 好,支持原创。帮你顶! 顶到100楼 superAFE 发表于 2013-8-2 19:52 static/image/common/back.gif
对LZ搞的这一块完全不懂,请见谅!
请问,这代码很有价值吗?要顶到100楼才肯帖出原代码? ...
tcp服务器代码很有价值的,用到2812上就显得用处不大了 学习学习 真个真心不懂,现在搞大功率的电机控制器。之前对这一块很感兴趣 看不懂,顶个 谢谢分享,mark
页:
[1]