返回信息流Hello everyone,
我现在正用c++在.net 2005下做个软件,其中有一块是点对点传输文件的。
由于没有什么基础,图书馆也关了,基本上只能靠上网查资料。但是找到的好多都是用C#或者VB写的。走投无路只好试着把语法改成C++的,选择用TCPCLIENT和listener来发送和接收。 但是这两句:
..........
//用于接收的缓冲区
byte[] MyBytes = new byte[1024];
//MyStream 是个NetworkStream类型的对象,已经进行对TCPClient的GetStream操作
int MyBytesRead = MyStream.Read(MyBytes, 0,Mybytes.Length);
......
转换成C++ .net后:
...
System::Byte^ myBytes= new System::Byte[1024];
int ByteRead = ms->Read(myBytes, 0, 1023);
...
ERROR:
e:\c++项目\cpsec\simplechat\simplechat\Form1.h(60) : error C2440: 'initializing' : cannot convert from 'unsigned char *' to 'System::Byte ^'
No user-defined-conversion operator available, or
Cannot convert an unmanaged type to a managed type
e:\c++项目\cpsec\simplechat\simplechat\Form1.h(61) : error C2664: 'int System::IO::Stream::Read(cli::array<Type,dimension> ^,int,int)' : cannot convert parameter 1 from 'System::Byte ^' to 'cli::array<Type,dimension> ^'
with
[
Type=unsigned char,
dimension=1
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
这里应该怎么定义变量呢?
最后请问下大家,有没有关于C++.NET网络编程的书可以借我几天,给链接也行呵呵,谢了。
这是一条镜像帖。来源:北邮人论坛 / soft-design / #29155同步于 2008/8/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
C++ 在.net下传输文件遇到问题
HectorInsanE
2008/8/17镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
还有..饿滴神.......除非你非常熟悉 c++...否则一般不要尝试 c++CLR.
个人愚见.............
涉及到托管费托管..的问题..而且变量写的超级不好看...........
如果允许..直接C#代码得了..
ls说的是……
痛苦1:C++的确不能动态生成数组……
痛苦2:的确C++的intelli sense极度恶心 什么类型都要把整个命名空间给搬出来
请教下,什么叫直接C#代码?
在C#平台做的话应该是简单点吧
但是还有另外一位成员的在使用C++做图像处理,需要用到指针……
假如这块用C#做的话,中间的代码融合过程我完全不了解,所以……
ls有什么好的建议
【 在 HectorInsanE 的大作中提到: 】
: Hello everyone,
: 我现在正用c++在.net 2005下做个软件,其中有一块是点对点传输文件的。
: 由于没有什么基础,图书馆也关了,基本上只能靠上网查资料。但是找到的好多都是用C#或者VB写的。走投无路只好试着把语法改成C++的,选择用TCPCLIENT和listener来发送和接收。 但是这两句:
: ...................
请用gcnew , 而不是new,
至于其它一些特性,建议自己上网查查
MS可以把C++部分编译生成后导入C#工程调用C++的函数~具体建议baidu
【 在 HectorInsanE (EJ|BYR-Enjoy|GC|TIC029|鲨鱼帮极光鲨) 的大作中提到: 】
: ls说的是:
: 痛苦1:C++的确不能动态生成数组……
: 痛苦2:的确C++的intelli sense极度恶心 什么类型都要把整个命名空间给搬出来
: ...................
【 在 UnitTest 的大作中提到: 】
: 请用gcnew , 而不是new,
: 至于其它一些特性,建议自己上网查查
array<System::Byte>^ numbers = gcnew array<System::Byte>(5);
【 在 derkaiser 的大作中提到: 】
: MS可以把C++部分编译生成后导入C#工程调用C++的函数~具体建议baidu
飞版BM你好啊……
MS.net的出现原因之一就是为了解决这种问题的……
不过没看过周围有谁是这样做的呵呵
好吧,现在试试C#的看看。
对了你有没有找师兄搞张择校的list来看看?
【 在 UnitTest 的大作中提到: 】
: array<System::Byte>^ numbers = gcnew array<System::Byte>(5);
强人啊!果然通过了……
CLR下面定义数组竟然要用array<type>来定义……
谢谢!