C# Socket发送文件前,我想先发送文件大小。下面这个例子中的fs.Length是1115,为什么转换为字节数组的时候,lenArr[0]=91,lenArr[1]=4,剩下的都是0.这样加起来不够数啊byte[] lenArr = BitConverter.GetBytes(fs.Length);
解决方案 »
- winform 如何取得discuz!论坛的验证码,并显示在picturebox中
- 在C#中如何获取access数据库表的主键字段名
- #又是正则。。求正则#
- 咨询一个xml节点查找的问题
- 求用线程怎么控制主线程(窗体)中的控件
- C#如何调用Direct?
- 保存 而不是 另存为
- 有关函数参数传递 ,引用的概念不是特别清楚,希望高手能把自己的经验之谈讲一讲!
- 能从c#的浏览器组件提取response中的body吗?
- DataGrid中显示的字段名是英文的(和数据库中的一样),怎么修改
- 水晶报表 控制两个详细内容
- 【】请教达人:关于winform datagridView userControl问题?【】
服务器接收:
Socket handler = listener.EndAcceptSocket(ar);
//
byte[] filenamebyte = new byte[128];
int namesize = handler.Receive(filenamebyte); //Receive 接收时会得到一个长度
string filename = Encoding.UTF8.GetString(filenamebyte,0,namesize);
byte[] size = new byte[128];
int strsize = handler.Receive(size);int filesize = Convert.ToInt32(Encoding.UTF8.GetString(size ,0,strsize));
//文件大小传过来了
这样长度不久动态了
byte[] temp = new byte[32];
int length=client.Receive(temp);
string strLength = Encoding.UTF8.GetString(temp, 0, length);
//这是服务器端的代码,strLength 的值是"[\0\0\0\0\0\0",这是为什么呢 using (FileStream fs = File.Open(filePath, FileMode.OpenOrCreate))
{
byte[] lenArr = BitConverter.GetBytes(fs.Length);
socket.Send(lenArr);
fs.Close();
//这是客户端的代码
byte[] lenArr = Encoding.UTF8.GetBytes(fs.Length.ToString());
楼主要发送文件的长度,干嘛要人家先转成字符串,文件长度用4个字节的int32或者8个字节的int64就可以了。
用序列化也不会解决什么问题。
请问怎么发送int类型的值呢?我看了Socket.Send都是要发送byte[]的啊
FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read);
int bodylenght = (int)file.Length;//获得文件大小怎么发送不用我教你了吧