[SerializableAttribute]
[ComVisibleAttribute(true)]
public class SendType
{
public string SendName {getset}
public string RecName {getset}
public string Data {getset}
}
新建一个结构变量,public SendType SendData = new SendType()
SendData.SendName = "A"
SendData.RecName = "B"
SendData.Data = "Hello"
如此初始化后,将变量序列化后,提取byte[]数组直接发送,服务器再接收后再反序列化,转发。
[SerializableAttribute]
[ComVisibleAttribute(true)]
两个标记就是标记SendType类为可序列化,否则会造成不能序列化的编译错误。
我们不能保证不丢失,但是我们可以在丢失的时候再发啊,所以我们可以模范TCP协议,下面是我的想法,仅供参考:1。服务端为每一个发送的数据加一个标识,并在发送的时候该数据加入到一个数组中,这个数组同时要记录这个数据加入的时间(之后要用到这个时间)
2。客户端收到一个数据的时候,要返回服务端一个接受成功的信息,这个信息包含数据标识,服务端收到这个信息就将数组中对应的数据删除;
3。服务器隔一段时间,就读取那个数组,判断数据加入数组的时间到当前时间的时间差,如果时间差大于某一个值(这个值要好好考虑,不过应该要大于1秒),我们就假设发送失败了,那就重发这个数据
4。重复第2和3步骤,直到所有数据发完以及数组为空,那么客户端就应该接受到所有数据了
当然这肯定会影响性能,祝你好运
先找到你自己机器的内网地址,打开cmd,输入ipconfig,查看一下IPv4地址就是你的内网IP,再登录路由器找到虚拟服务器,填写你的内网ip地址,内网端口和外网端口根据你的实际需求写,协议类型一般写all就行!欢迎分享,转载请注明来源:夏雨云
评论列表(0条)