我正在通过网络制作一个简单的文件传输发件人和接收器应用程序.到目前为止,我发送的是发送方将文件转换为字节数组,并将该数组的块发送给接收方.
这适用于最多的文件256mb,但是上面的任何内容:
byte[] buffer = StreamFile(fileName); //This is where I convert the file
Throws a System out of memory exception.
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来读取块中的文件然后写入该块而不是将整个文件加载到byte.我该怎么做FileStream?
编辑:
对不起,到目前为止,这是我糟糕的代码:
private void btnSend(object sender, EventArgs e)
{
Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
byte[] fileName = Encoding.UTF8.GetBytes(fName); //file name
byte[] fileData = null;
try
{
fileData = StreamFile(textBox1.Text); //file
}
catch (OutOfMemoryException ex)
{
MessageBox.Show("Out of memory");
return;
}
byte[] fileNameLen = BitConverter.GetBytes(fileName.Length); //length of file name
clientData = new …Run Code Online (Sandbox Code Playgroud) 我有一个表单,您可以拖放文件,我想知道如果数据是文件或文件夹,我怎么能知道应用程序.
我的第一次尝试是寻找一个"." 在数据,但然后一些文件夹确实有一个.在他们中.我也试过做一个File.Exists和一个Directory.Exists条件但是它只搜索当前的应用程序路径而不是其他任何地方.
无论如何我可以以某种方式将.Exists应用于特定目录中,或者有没有办法可以检查拖入表单的数据类型?
美好的一天
我有一个应用程序,我用它来存档使用DotNetZip库的文件夹.我注意到,当它进入实际的"压缩"过程时,它占用了100%的CPU.这个应用程序将与另一个(一个TCP聊天应用程序)一起使用,所以我真的需要这个使用尽可能少的CPU.
有什么办法可以安全地限制cpu吗?我试过降低优先级,但没有什么区别.我现在唯一能做的就是将亲和力设置为1核心,使其使用50%.但当然这只适用于多核计算机.
嘿,我对加密和解密很陌生,说实话,甚至对 C# 语言也很陌生。基本上,我有一个 TCP 聊天服务器,可以“保存”日志并加密文本文件。这就是我加密的方式(基于 MSDN 示例):
public static void EncryptFile(string strInputFileName, string strOutputFileName, string strKey)
{
FileStream fsIn = new FileStream(strInputFileName, FileMode.Open, FileAccess.Read);
FileStream fsOut = new FileStream(strOutputFileName, FileMode.Create, FileAccess.Write);
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Key = ASCIIEncoding.ASCII.GetBytes(strKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(strKey);
ICryptoTransform desencrypt = des.CreateEncryptor();
CryptoStream cryptostream = new CryptoStream(fsOut, desencrypt, CryptoStreamMode.Write);
byte[] byteArrayInput = new byte[fsIn.Length - 1];
fsIn.Read(byteArrayInput, 0, byteArrayInput.Length);
cryptostream.Write(byteArrayInput, 0, byteArrayInput.Length);
fsIn.Close();
fsOut.Close();
}
Run Code Online (Sandbox Code Playgroud)
该方法成功对文件进行完全加密。这是我的解密方法:
public static void DecryptFile(string strInputFileName, string strOutputFileName, string strKey)
{ …Run Code Online (Sandbox Code Playgroud) 嗨,我有这个SELECT查询.我已经尝试在Visual Studio 2008上的SQL窗格上排除查询并且它可以工作.但是,当我运行页面(这是一个asp.net页面)时,它会抛出一个SQL异常,说我在Scheduleles附近有一个不正确的语法.
string selectSchedString = "SELECT Subjects.subject_title, Schedules.class_day, CAST(MIN(Schedules.time_in) AS varchar(10)) + ' - ' + CAST(MAX(Schedules.time_out) AS varchar(10)) AS Expr1" +
"FROM Schedules "+ //The exception points here
"INNER JOIN Subjects ON Schedules.subject_id = Subjects.subject_id " +
"INNER JOIN Student ON Student.section_id = " + currentSection + " " +
"GROUP BY Subjects.subject_title, Schedules.class_day";
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?正如我所说的,我尝试在SQL窗格上将其排除,并且它有效.asp.net中有什么特殊情况我错过了吗?
c# ×4
file ×3
cpu-usage ×1
cryptostream ×1
directory ×1
dotnetzip ×1
encryption ×1
exception ×1
filestream ×1
sql ×1
tcp ×1