LingYi 发表于 2013-8-2 17:03:26

开源一个,本人写的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楼,就出贴源代码。(编辑说明:添了些说明。。。)

yunhuisong 发表于 2013-8-2 17:06:39

{:victory:}帮顶……

Excellence 发表于 2013-8-2 17:12:08

100楼。。。。

jiki119 发表于 2013-8-2 17:16:01

帮顶!接着定!!!!!

LingYi 发表于 2013-8-2 17:33:45

速度好慢哦。。。。

niba 发表于 2013-8-2 17:36:11

工程巨大呀。。。。学习中

tianxian 发表于 2013-8-2 17:54:05

帮顶         

wzda_gundam 发表于 2013-8-2 17:58:16

这么niu{:shocked:}

wugang_1213 发表于 2013-8-2 18:38:15

顶楼主。

LingYi 发表于 2013-8-2 19:40:15

niba 发表于 2013-8-2 17:36 static/image/common/back.gif
工程巨大呀。。。。学习中

呵呵,确实有点大。不过还不是很完整,只是能工作。

jiaohaitao 发表于 2013-8-2 19:48:59

支持一个,发出来{:victory:}{:victory:}

eryueniao 发表于 2013-8-2 19:53:17

w d我顶                                                            

NIC 发表于 2013-8-2 20:20:02

单身的楼主果然强大!

LingYi 发表于 2013-8-2 20:52:21

superAFE 发表于 2013-8-2 19:52 static/image/common/back.gif
对LZ搞的这一块完全不懂,请见谅!

请问,这代码很有价值吗?要顶到100楼才肯帖出原代码? ...

其实,不用啦!明天晚上,约MM,成功了下个礼拜1,就共享。

LingYi 发表于 2013-8-2 20:52:44

NIC 发表于 2013-8-2 20:20 static/image/common/back.gif
单身的楼主果然强大!

伤不起啊!

lsy5110 发表于 2013-8-2 20:54:47

{:smile:}帮顶!

NIC 发表于 2013-8-2 21:08:44

LingYi 发表于 2013-8-2 20:52 static/image/common/back.gif
其实,不用啦!明天晚上,约MM,成功了下个礼拜1,就共享。

楼主,期待你的代码,更期待你的精彩故事!{:lol:}

LingYi 发表于 2013-8-2 21:10:43

NIC 发表于 2013-8-2 21:08 static/image/common/back.gif
楼主,期待你的代码,更期待你的精彩故事!

太感谢了。。。。

o0pingu0o1 发表于 2013-8-3 06:31:48

期待学习,100楼。

ginonie 发表于 2013-8-3 07:12:27

顶起!100楼

LingYi 发表于 2013-8-3 11:32:35

才21楼,哎!大家一起加油哦

wkman 发表于 2013-8-3 11:43:15

{:sweat:} 好庞大,,,玩 DSP 阿,

tim 发表于 2013-8-3 11:46:49

盖楼{:lol:}{:lol:}{:lol:}

u123321 发表于 2013-8-3 12:40:16

帮顶,感觉很好。

NIC 发表于 2013-8-12 21:17:48

这个还没到100楼,再帮楼主顶一下,大家一起顶阿

zouzhichao 发表于 2013-8-12 21:33:55

顶一下以表膜拜

LingYi 发表于 2013-8-12 22:13:34

过段时间就上传,虽然没有100层楼!

xiefy21 发表于 2013-8-16 17:28:25

mark…
顶一个…

casterbn 发表于 2013-8-17 10:20:34

{:lol:}盖楼

LingYi 发表于 2013-8-17 12:56:11

本帖最后由 LingYi 于 2013-8-17 14:57 编辑

哎!虽然没有100楼,但是我还是忍了,送给需要的人。声明:代码仅供学习、研究,请不要用于商业目的,可能代码存在些BUG,请使用的时候小心,如果出现问题,我个人不承担任何责任。万分感写你能够反馈BUG给我,谢谢!

laujc 发表于 2013-8-17 14:53:57

友情帮顶呀.
不过自己没做过TCP/IP方面的东西,不了解呀

zyzoe2003 发表于 2013-8-19 10:43:40

楼主好人一个!!

retime 发表于 2013-8-19 10:51:22

{:lol:}怎么那么复杂,我的TCP服务器2行代码都不到

LingYi 发表于 2013-8-19 11:14:47

retime 发表于 2013-8-19 10:51 static/image/common/back.gif
怎么那么复杂,我的TCP服务器2行代码都不到

你用的别人的吧!自己调用一下就是了?

xiaoliequan 发表于 2013-8-20 08:06:28

那是一定要顶!

NIC 发表于 2013-8-25 11:01:39

谢楼主分享

LingYi 发表于 2013-11-11 17:14:43

{:loveliness:}{:loveliness:}

wswh2o 发表于 2013-11-11 20:41:37

这种东西不开源最后都得压箱底

LingYi 发表于 2013-11-11 21:09:18

wswh2o 发表于 2013-11-11 20:41 static/image/common/back.gif
这种东西不开源最后都得压箱底

哎!目前也没有什么用处啦

DOER 发表于 2013-11-12 08:53:08

43楼了,搬砖盖楼

bluetears 发表于 2013-11-12 09:45:31

{:victory:}頂起

棋间卒 发表于 2013-11-12 09:58:19

精神可嘉,值得学习

wtliu 发表于 2013-11-12 10:13:57

好,支持原创。帮你顶!

lizai10 发表于 2013-11-12 10:30:45

顶到100楼

weichao4808335 发表于 2013-11-12 10:38:04

superAFE 发表于 2013-8-2 19:52 static/image/common/back.gif
对LZ搞的这一块完全不懂,请见谅!

请问,这代码很有价值吗?要顶到100楼才肯帖出原代码? ...

tcp服务器代码很有价值的,用到2812上就显得用处不大了

电子小生 发表于 2014-4-11 19:08:55

学习学习                                       

tuohang2013 发表于 2014-11-27 19:30:50

真个真心不懂,现在搞大功率的电机控制器。之前对这一块很感兴趣

shaojianbuguai 发表于 2014-11-27 19:40:03

看不懂,顶个

李程宏 发表于 2014-11-27 21:38:21

谢谢分享,mark
页: [1]
查看完整版本: 开源一个,本人写的TCP服务器,求穿裤衩。