记一次计通项目(网元设计)(更新中)

我什么都不懂突然要让我写个套接字程序我当然是拒绝的,但是没有办法还是只有靠百度了。

首先是要学习套接字基础。一开始是照着书上写,结果书上是linux,编译不过也不知道为什么,以为我头文件漏了。百度了半天发现windows和linux不一样,啊教材为什么不早说,看不起windows?后来就哪里出问题哪里搜一下,还觉得只有vs才能编译过,又下了半天下了一个vs(好大啊),又复习了一下vs的用法,让我这个天天用DevC++的选手觉得甚是复杂。其实结果还不如直接搜windows套接字编程重新打一个。
要注意搜索的时候加上windows,百度上有很多资料。本来觉得对于C++还比较熟悉,但是换了一套函数之后就完全不知道该怎么写了呢。好在经过努力还是学会了。这一步大概会了如何在本地的两个powershell窗口通信,虽然试过连到别人的IP上,但是并没有成功。

项目中,老师给了一个物理层模拟软件,是干什么的呢?就是在本地的两个端口用udp传输比特流,也就正是“模拟物理层”的意思了。然后第一个任务就是要写程序实现控制每500ms发送一个随机数这样的功能,首先就是要链接到模拟器的udp端口。指导书上写的是打开物理层模拟软件配置端口,我以为就是直接打开自己把端口写上去。
物理层模拟软件
然而并不是,起初就有一个疑惑就是,我这么配置一下,也没什么确认按钮,他怎么就把端口打开了。因为当时对于套接字不是很熟悉,老师给出的示例程序也不完整,以为是自己代码出了问题,时隔一周再看,自己创建的本地端口是没有问题,发送也成功了,但是没有收到目标端口的ACK消息,在模拟软件上改来改去也没有实现,然后就在怀疑这个模拟软件出了问题。他没有打开端口。到这里我才想到,是不是不能直接打开这个物理层模拟软件,要用老师给的一个一键启动exe?因为之前使用那个exe是直接读取保存好的配置文件然后直接开始运行,所以并没有想到会用在这里,而且他们已经完成了链接,我再用一个udp端口去链接,还连的上吗。但是不论如何要试一下,然后这个困扰了我一个多星期的令人崩溃的问题居然就这么好了??激动的我想记录一下这**的探索过程。

有几个新要求:

实现分帧封装,就是加头加尾
添加校验码
实现流量控制

学艺不精,起初只看懂了加校验码这个要求,相当于是写一个小模拟。模拟一下mod2意义下的除法,高精度除法很难写,但是这个mod2意义下的除法只需要异或就行了,非常的方便好写。然后实现一下改变数组长度,把余数添加到末尾就可以了。

不过跟算法还是有很大差别,想着自己写的是工程代码,不能瞎开空间,开始用char *s=new int[10];这种以前基本上没用过的动态开内存方法,然后试图使用.h文件,不过.h确实让我懵逼了一下,一直编译不过去(可能是因为visual studio事儿多),最后的话,明白了.h文件就是写函数声明的,对应的cpp文件是写实现的,这样写其他cpp文件的时候就可以直接把h文件include进来,就可以用了。
然后.h文件尽量不要包含别的.h文件,因为会出现重复定义的问题。因为这个问题编译不过,查了挺多资料,前后加#define也试过,加#pragma也试过,但是就是会出现重复的问题,所以索性不包含了。而且还要在visual studio里面改一下,把pch.cpp改为"创建预编译头",pch.h是“加载预编译头”,这样才能编译过。

分帧封装是小组同学写的,因为这周末去厦门CCPC了,到处旅游跑着还是比较累,也花钱,不过第一次看到了海也算是比较震撼和开心。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值