|
landersohn69 wrote: n each of these threads I create another form that hosts an ActiveX control (3rd party which requires a window).
Yeah, there's your entire problem. Because the forms (which are themselves controls) are not reliably connected to the message pump, your forms are not going to work reliably. There is no way to fix it other than to move all the UI stuff back to the UI (startup) thread.
Get an OCR library that doesn't depend on an ActiveX control to work.
|
|
|
|
|
Message Closed
modified 4-Mar-15 8:57am.
|
|
|
|
|
It doesn't quite work like that.
We do not do your work for you.
If you want someone to write your code, you have to pay - I suggest you go to Freelancer.com and ask there.
But be aware: you get what you pay for. Pay peanuts, get monkeys.
And this is an English language site - please try to post in English in future.
[Google Translate]
Il ne fonctionne pas tout à fait comme ça.
Nous ne faisons pas votre travail pour vous.
Si vous voulez quelqu'un pour écrire votre code, vous devez payer - je vous suggère d'aller à Freelancer.com et demandez-il.
Mais soyez conscient: vous obtenez ce que vous payez. Payez arachides, obtenir singes.
Et ce est un site de langue anglaise - se il vous plaît essayer de poster en anglais à l'avenir.
[/Google Translate]
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
for an upcoming WPF application I am asked to give my opinion on the architecture....
right now pondering the client server part...
1 server might 1000+ tablet connected to it. and it might need to push some information to it (.e. 2 way communication).
my first though was WPF talk to Server with WCF.
then as I see the server need to talk back... and never used Duplex comm but wonder about 1000+ client I thought, hey, how about a WCF server on the client that the server could connect to!?
then I though, damn, it's on the internet!! some evil people will talk to our machines!
some maybe I should use secure communication...
but what if people try to impersonate the machines and do dictionary password attack? mm...
maybe I should use HTTPS+WebAPI+SignalR and restrict the IP that can talk to each other...
Is the IP reliable? (or can it be spoofed?)
Anyhow, any idea?
|
|
|
|
|
Internet servers do not "push" data to the clients; connections are stateless and only last as long as it takes to reply to a single "query" (GET; POST; whatever) from a client; either synchronously or asynchronously (WCF).
If clients need to receive "unsolicited" information, then they should "poll" the server at a reasonable interval (so as not to flood the server) and "ask" if there is any information specifically for them.
|
|
|
|
|
This is an interesting one. If data is not pushed, then what is the purpose of WebSockets?
|
|
|
|
|
You're right; OP should consider WebSockets.
I assumed OP was only considering HTTP.
|
|
|
|
|
Hello im a beginner to c# and i made this little tool to ping servers but i would like to add a feature such as packet-loss, and more ping checks, says at-least 2-3 each press, how can i do that i have read the documentation and searched Google for answers but it didn't really help me as i want it all to be in one button.
private void button5_Click(object sender, EventArgs e)
{
Ping ps = new Ping();
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 10000;
PingOptions op = new PingOptions();
PingReply rp = ps.Send("127.0.0.1(removed)", timeout, buffer, op);
if (rp.Status == IPStatus.Success)
{
listBox1.Items.Add(rp.RoundtripTime.ToString() + " MS - This is your average ping to Korea (Test 1)\n");
}
else
{
listBox1.Items.Add(rp.Status.ToString() + "Unable to connect! Server might be down - try again later..\n");
}
}
}
}
Thanks for any help!
|
|
|
|
|
If you want to see more info such as "packet loss", then you should look at this article:
C# Ping Component[^]
|
|
|
|
|
Thanks really helpful, but as i'm a beginner i don't quite understand what part of the code is measuring the the packet-loss, as i try to make the code work all inside 1 click.
Maybe that's not possible?
I know how to display every option besides the loss..
|
|
|
|
|
Here's an example that is a little simpler and gives you what you want ("packet loss").
Note that it does not use the C# Ping class; instead it runs the Ping "command line utility" and captures and parses the output from this utility.
using System;
using System.Diagnostics;
namespace ConsoleApplication14 {
class Program {
static void Main( string[] args ) {
Process process = new Process();
process.StartInfo.FileName = @"Ping";
process.StartInfo.Arguments = @"www.msn.com";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
int start = output.IndexOf( "Lost =" );
int end = output.IndexOf( ',', start );
Console.WriteLine( output.Substring( start, end - start ) );
Console.ReadKey( true );
}
}
}
|
|
|
|
|
hello,
Please help me...
How to import excel sheet data into postgresql database table in C# windows application.
Thanks for advance..
|
|
|
|
|
|
Lots of ways. Where are you stuck?
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
Please update your question with what you have done so far and where you are stuck.
In case of complex problems, make sure to divide your problem in smaller problems.
1. Read in an excel file. This is your first. You can use the excel binaries and reference them in your C# application. From there you can use several functions to open a document and read it in. If it's a csv file you can just use a StreamReader class as csv is not an excel file, but an ASCII file (that excel just happens to understand, more or less) Google : "C# read excel file" and I'm sure you get sample code thrown at you in the results.
2. When you are able to open and read a file make sure to create objects able to hold the records. This object should also check the input for validity and quality, not allowing to add the record if wrong or at least log it somewhere/somehow
3. Now that you have a list of your objects and a database to hold the data you need to create a postgresql connection and write the data to the database (again samples can be found on google). If it is a lot of data you can generate insert queries in a loop eg. To improve performance concatenate the insert queries and only execute by the 100 eg. (make sure to finish the query with ";") Something like this:
StringBuilder builder = new StringBuilder("");
for(int i = 0; i < myrecordobject.Count; i++){
builder.append("Insert into ...");
builder.append(";");
if(i % 100 == 0){
builder = new StringBuilder("");
}
}
4. make sure when writing to the database you also log errors. It is not that data passed the quality test in the object, it also passes the quality check of the database (assuming there are quality checks)
If you do not need to use a C# application perse, maybe have a look if postgresql doesn't allow import from excel.
hope this sets you more or less on your way.
|
|
|
|
|
i want converted version of .Net scheduled Timer in vb.net i can't understand the c# one...
|
|
|
|
|
What Timer are you talking about?
|
|
|
|
|
|
C# and VB.Net are quite similar so I would suggest posting a specific line of C# code and asking about it.
There are only 10 types of people in the world, those who understand binary and those who don't.
|
|
|
|
|
I am developing a FTPS component in my ASP.Net application.
We configued the Personal Certificate,Intermediate Certificate and Root Certificate in Server and Client machine MMC console.
I am stuck in to implement the same as I am getting below error:
--------------------------------------------------------
.
.
.
System.Net Information: 0 : [6876] SecureChannel#65124268 - Certificate is of type X509Certificate2 and contains the private key.
System.Net Information: 0 : [6876] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent = Outbound, scc = System.Net.SecureCredential)
System.Net Error: 0 : [6876] AcquireCredentialsHandle() failed with error 0X8009030D.
System.Net Information: 0 : [6876] AcquireCredentialsHandle(package = Microsoft Unified Security Protocol Provider, intent = Outbound, scc = System.Net.SecureCredential)
System.Net Error: 0 : [6876] AcquireCredentialsHandle() failed with error 0X8009030D.
System.Net.Sockets Verbose: 0 : [6876] Socket#19949373::Dispose()
System.Net Information: 0 : [6876] FtpWebRequest#64456428::(Releasing FTP connection#53218812.)
System.Net Error: 0 : [6876] Exception in FtpWebRequest#64456428::GetRequestStream - The remote server returned an error: 234 SecurFTP: SSL starting
..
at System.Net.FtpWebRequest.CheckError()
at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
at System.IO.Stream.Close()
at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
at System.Net.FtpWebRequest.GetRequestStream()
System.Net Verbose: 0 : [6876] Exiting FtpWebRequest#64456428::GetRequestStream()
System.Net Information: 0 : [1320] ServicePoint#797974 - Closed as idle.
--------------------------------------------------------
Please help me to solve this issue as it is urgent.
Below is my sample code:
---------------------------------------------------------
public bool FileTransferStatus(FileInfo oFile, string localCertificateNames, bool isFileType, out string statusMessage)
{
FtpWebRequest ftpRequest;
FtpWebResponse ftpResponse;
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(FTPSite + CurrentDirectory + oFile.Name);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpRequest.Proxy = null;
ftpRequest.UseBinary = true;
ftpRequest.Credentials = new NetworkCredential(UserName, Password);
ftpRequest.KeepAlive = KeepAlive;
ftpRequest.EnableSsl = UseSSL;
ftpRequest.UsePassive = true;
if (UseSSL)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
List<string> listLocalCertificates = localCertificateNames.Split(',').ToList<string>();
if (isFileType)
{
foreach (string localCertificate in listLocalCertificates)
{
string currentCertificate = localCertificate.Replace("\n", "").Replace("\t", "").Replace("\r", "");
X509Certificate certificate = X509Certificate.CreateFromCertFile(System.AppDomain.CurrentDomain.BaseDirectory + currentCertificate.Trim());
ftpRequest.ClientCertificates.Add(certificate);
}
}
else
{
X509Store storeRoot = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
storeRoot.Open(OpenFlags.ReadOnly);
X509Store storePersonal = new X509Store(StoreName.My, StoreLocation.LocalMachine);
storePersonal.Open(OpenFlags.ReadOnly);
List<string> listSerialNumbers = localCertificateNames.Split(',').ToList<string>();
foreach (string sn in listSerialNumbers)
{
string serialNumber = sn.Trim().ToUpper();
X509CertificateCollection certificates = storeRoot.Certificates.Find(X509FindType.FindBySerialNumber, serialNumber, false);
if (certificates.Count == 0)
{
certificates = storePersonal.Certificates.Find(X509FindType.FindBySerialNumber, serialNumber, true);
}
if (certificates.Count == 0)
{
throw new Exception(string.Format("Certificate {0} not found", serialNumber));
}
storeRoot.Close();
storePersonal.Close();
X509Certificate certificate = certificates[0];
ftpRequest.ClientCertificates.Add(certificate);
}
}
}
byte[] fileContents = new byte[oFile.Length];
using (FileStream fr = oFile.OpenRead())
{
fr.Read(fileContents, 0, Convert.ToInt32(oFile.Length));
}
using (Stream writer = ftpRequest.GetRequestStream())
{
writer.Write(fileContents, 0, fileContents.Length);
}
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpResponse.Close();
ftpRequest = null;
statusMessage = "Uploaded successfully";
return true;
}
catch (Exception webex)
{
statusMessage = webex.Message;
return false;
}
}
---------------------------------------------------------
Friendly,
Satheesh
|
|
|
|
|
|
Hello,
I am currently developing a Quiz that has to send the result of each participant to me via a TCP-connection. On the server computer (with the "master" application) the results get evaluated. It is of vital importance that the results are transmitted rapidly (that's why TCP rather than uploading result or such).
The connectin itself works, I just struggle with the StreamReader (and StreamWriter). This is my code as of now:
Client-Sending:
private void onButtonClick() {
TcpClient client;
client = new TcpClient("127.0.0.1", 25543);
StreamWriter writer = new StreamWriter(client.GetStream());
writer.Write("Test");
writer.Flush();
}
Server-Receiving (runs in Timer):
TcpClient client = new TcpClient();
TcpListener listener = new TcpListener(25543);
if (listener.Pending()) {
message = null;
client = listener.AcceptTcpClient();
StreamReader reader = new StreamReader(client.GetStream());
while (reader.Peek() != -1)
{
message += reader.Read().ToString();
}
MessageBox.Show(message);
}
Right now, when I run this, the message that gets displayed in the MessageBox is a very long number, for the message "Test" it's "84101115116". How can I convert this integer back to the original string "Test", so that the original message is displayed correctly in my server application?
I know that e.g. 84 in ASCII is the letter T, however the other numbers are different. Can some1 help?
Greetings
~Veraner
|
|
|
|
|
The Read method reads a character as an int. I believe that if you do:
message += (char)reader.Read(); (without the ToString())
it will probably work.
Yet, I believe your code has many problems...
I would recommend using WriteLine, not only Write, after all TCP/IP packets may be split in many messages. Your while() will fail if that happens.
Also, as you don't use another thread or asynchronous calls, the server is only able to deal with one client at a time.
|
|
|
|
|
Thank you - that solved my issue!
By now I made a seperate threat for this function and will have a look towards the WriteLine / while part.
|
|
|
|
|
Hi,
I have a datagridview. Under column is copy id from other tabel, i want auto change id with -1 to only number without -. Replace is dont working for datagridview. Who can help me?
This string work only for the textbox how can i change it for datagridview?
identity = identity.Replace("-", "");
modified 1-Mar-15 11:16am.
|
|
|
|