|
ha ha ha... yes I did and I remember you.... but you remembered me? So nice of you to help me out a lot. Actually its kind of a project where I have to send files from client to server... in a loop and those files are, fortunately or unfortunately image files . I mean its kind of streaming. I am not that much good in very low level programing... but thank you very much for your prompt reply and help.
I really appreciate this act of yours.
If, I mean just a request, tell me resource (are there any on CP? let me check out...) for low level performance oriented network programming in C# .NET.
May God Bless you with more;
mE
---------------------
A gasp of breath,
A sudden death:
The tale begun.
A rustled page
Passes an age:
The tale is done.
|
|
|
|
|
Glad I could help.
Performance is likely only important on the server. Given that, the best bet might actually be to change your approach a bit and let Microsoft do that work for you. Is there any reason you could not use a webpage hosted in IIS to recieve your files? (I do not mean a web form that the user would access via their browser, but rather an HttpHandler that would access uploads from your client application.)
-Blake
|
|
|
|
|
Since I'm in a sample writing mood, here's an example of what I'm describing in the post above.
Usage:
~ Edit upload.aspx and change the savePath to the location you want the files saved in. (Better yet, move the path to your web.config file.)
~ Check the ACLs on that path and make sure the ASPNET user (or whatever user you are running ASP.NET under) has permissions to write files there.
~ Save upload.aspx in your webroot somewhere.
~ Compile client.cs and test with "client http://yourserver/yourpath/upload.aspx testfile.dat"
Notes:
~ Since this uses standard HTTP file uploading, you can test it with a web page as well using an <input type='file'> tag in a form.
~ Also because this is standard HTTP you can easily add security as well, if this is an intranet application have a look at WebClient.Credentials and CredentialsCache.DefaultCredentials.
~ As is, the client is in control of the filename used to save the file. As this permits on client to overwrite files from another it is probably not good idea. Perhaps a folder per client, or generate unique names yourself.
~ If you want to save the files in a database instead of the filesystem, use HttpPostedFile.GetInputStream() instead of HttpPostedFile.SaveAs() and you won't need to write anything to a working directory at all.
~ By default ASP.NET will not let you upload more than 4MB per file, if your situation requires larger files you can change that default in your web.config under system.web/httpRuntime/maxRequestLength.
client.cs
using System;
using System.Net;
using System.Text;
class Upload {
static int Main(string[] args) {
try {
Console.WriteLine(Encoding.UTF8.GetString(
new WebClient().UploadFile(args[0], args[1])));
return 0;
} catch (Exception e) {
Console.WriteLine(e.Message);
return 1;
}
}
}
upload.ashx
<%@WebHandler class='Upload'%>
using System.IO;
using System.Web;
public class Upload : IHttpHandler {
const string savePath = @"D:\src\FileTransfer\output";
public void ProcessRequest(HttpContext context) {
HttpFileCollection files = context.Request.Files;
if (files.Count == 0) {
context.AddError(new HttpException(400, "not multipart/form-data"));
return;
}
for(int i = 0; i < files.Count; ++i) {
string fileName = Path.Combine(savePath,
Path.GetFileName(files[i].FileName));
files[i].SaveAs(fileName);
context.Response.Write(string.Format(
"File Saved As {0} ({1} bytes)",
fileName, files[i].ContentLength));
}
}
public bool IsReusable { get { return false; } }
}
-Blake
|
|
|
|
|
ha ha ha ha... oh God!!! O My Sweet Blake... thank you very much for it all... but he he he he... it was not meant to be via HTTP ... O boy!
There are images stored on client's hard disk... of times when system was crashed. Right? When he calls the customer care, they ask him to run my application and my application sends those images to the support center. HTTP is not allowed coz of complexity and coz of other issues as well Thats all
Anyway, thanks again... you are like life saver... wishing you more luck;
keep up the good work
mE
---------------------
A gasp of breath,
A sudden death:
The tale begun.
A rustled page
Passes an age:
The tale is done.
|
|
|
|
|
Seems to me you should think that one through again. Why exactly is HTTP not allowed? It need not be on port 80 even, this is strictly a private exchange between parts of your application.
It is less complex rather than more to use the existing infrastructure. Compare the number of lines of code between my first example and my second one, and the second one is much more robust and functional.
You have use a protocol of some sort, as you can see from the simple protocol that I made up in that first example. That protocol is in fact much like HTTP.
Is it that IIS is not allowed?
-Blake
|
|
|
|
|
Yes. They don run IIS. Rather my part of the application is going to be the part of big picture. Thats why I am going after the customized development. Otherwise I know, IIS and HTTP and ASP .NET are cool thingys .
You know, legacy systems are greatest ropes tied across your wings. What you say?
Heyy... that gives me a idea... let me paste this line in lounge and lets see comments of ppl What you say?
You are Making My Day Well.
mE
here is a poem for you... I don know whether you like poetry or not, but still... enjoy
Then in the blink of an eye the time had come,
For you to go,
And others to mourn.
But all in all, something's still left behind:
The way you made others feel,
Which carries on the same spirit,
As if for real.
---------------------
A gasp of breath,
A sudden death:
The tale begun.
A rustled page
Passes an age:
The tale is done.
|
|
|
|
|
Hi, may I know how I can declare a static variable in a simple application? I know that in C/C++, static int x can be used. How about in C#? Thanks.
|
|
|
|
|
same way man...
static int whatever;
Free your mind...
|
|
|
|
|
Ooh, I fount out that static declaration!! And, I solved that page number problem that I posted some time earlier!! Finally~!
|
|
|
|
|
One catch with static is that they are only class level and not method level as you can in C++.
Rocky <><
www.GotTheAnswerToSpam.com
|
|
|
|
|
|
|
Dear Sirs,
Please guide me how I can generate a unique system-hardware dependent serial number in C#. I want this serial be different from a pc to Another one and never be the same.
Regards,
Sassan Komeili Zadeh
|
|
|
|
|
GUID is the solution...
By the way, you must know that the created GUID is realy globally unique only in case your computer has a Network Adapter. In case it doesn't, the GUID is only locally unique!
using System;
namespace PavelTsekov
{
class MainClass
{
static void Main(string[] args)
{
//let's create a GUID with C#
System.Guid guid=System.Guid.NewGuid();
Console.WriteLine(guid.ToString());
Console.ReadLine();
}
}
}
Free your mind...
|
|
|
|
|
Dear Guillermo,
Actually I want the code return the unique serial number always the same. If you run your code in a loop you will see it will return a unique one each time.
Sassan
|
|
|
|
|
Getting the NIC's serial is unique and how often do u replace a NIC?? Not much.
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
I'm working on the harddisk serial number. So when an application is installed, it returns a code... The user has to call to get the serial to enter with that code. Afterwards the program encrypts the harddisk serial number into a file. And compares it when the app is launched.
When the user re-installs the pc, he has only the replace the file.
When I get trough this, I will post it here
|
|
|
|
|
Dear Sir,
Everybody doesn't have Network Inteface.
Regards,
Sassan Komeili Zadeh
|
|
|
|
|
Is there a way to make the OpenFileDialog preview the file when the user clicks on a file. I want to preview an image.
Gary Kirkham
A working Program is one that has only unobserved bugs
I thought I wanted a career, turns out I just wanted paychecks
|
|
|
|
|
Regards,
which namespace/class give me methods to get unicode for any character?
Thanks
-nSun
---
"Art happens when you least expect it"
|
|
|
|
|
|
I have a problem. I have created my own control. It is similar to listview, but not quite. Therefore there are a collection with all the items. When adding elements in the designer through the Collection Designer "Changer", the properties of each item does not seem to persist in the autogenerated code for the form... What am I doing wrong?
Thanks in advance,
Gooky
|
|
|
|
|
You need to apply the DesignerSerializationVisibilty attribute i think
leppie::AllocCPArticle("Zee blog"); Seen on my Campus BBS: Linux is free...coz no-one wants to pay for it.
|
|
|
|
|
|
The specs for C# 2.0 are now available on MSDN at
http://msdn.microsoft.com/vcsharp/team/language/default.aspx
There is a discussion forum for the language on the same page.
Eric Gunnerson
Visual C# Compiler PM
|
|
|
|