|
That's a pretty dumb restriction - knowing an IP isn't a problem; it's making sure that the server is secure that is. Even if the server establishes a connection with the client, it's easy to determine the IP address (it's in the TCP/IP headers!). But you probably can't do anything about that.
If both the client and server are on the same LAN, you can use a multicast group. See the class documentation[^] for the MulticastOption class in the .NET Framework SDK for more details and a client/server example. This uses UDP to send datagrams (connectionless IP, unlike TCP) to a multicast IP address (reserved range; it's not the server's IP). Everyone in the multicast group can receive the message and process it.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I would try this method that I used.
IPAddress ipAdress = IPAddress.Any;
IPEndPoint Enp = new IPEndPoint(ipAdress, 60001);
Socket m_soc = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
m_soc.Bind(Enp);
//then do this to get the current IP&source port
System.Windows.Forms.MessageBox.Show(m_soc.LocalEndPoint.ToString());
Try that..should work in a x.x.x.x:x format
|
|
|
|
|
Hi, where can I foud user interfaces samples on windows forms and web forms to see conventions, good practoces, and controls orders, etc.
Thank you!
La realidad no es más que impulsos eléctricos del cerebro - Morpheus
|
|
|
|
|
|
hi,
I am developing a small chat (messenger) application in C#. There when i receive any message from others, i want my form to be bliked in the taskmanager like in yahoo messenger.
can any one tell me how can i get that?
thanks
Ravikumar
M.V.Ravikumar.
|
|
|
|
|
sorry, not taskmanager. I want the blink of the window in taskbar.
|
|
|
|
|
You'll want to P/Invoke the FlashWindow native API. See http://pinvoke.net/default.aspx/user32.FlashWindow[^] for details. To get the window handle used in the first parameter, use the Handle property of your main form, or Process.GetCurrentProcess().MainWindowHandle (which is the HWND of the main form that was specified in Application.Run either directly or indirectly).
To make it flash an X number of times, you can either use a timer or something like this (might be a good idea to thread it so that execution isn't blocked just to flash the window):
int flash = 3;
for (int i=0; i<flash * 2; i++)
{
Thread.Sleep(250);
FlashWindow(Handle, true);
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thank you very much.
It is solving my problem.
regards
Ravikumar.
M.V.Ravikumar.
|
|
|
|
|
Hello.
I read the article "Getting active TCP/UDP connections on a box" in coldeproject.com.
My application get all tcp connections and should close user selected connections.
But I have 2 problems:
problem 1 : I want to close slelected port from Listening ports.
I wrote below code for it ,but this don't work properly:
[DllImport("iphlpapi.dll",SetLastError=true)]
public extern static int SetTcpEntry(IntPtr pTcpRow);
IPHlpAPI32Wrapper.MIB_TCPROW Kill=new IPHlpAPI32Wrapper.MIB_TCPROW();
IntPtr current= globaltablepointer;
//globaltablepointer poit to start of array of MIB_TCPROW structure
current=(IntPtr)((int) current+(listBox1.SelectedIndex*24));
Kill.dwstate = MIB_TCP_STATE_DELETE_TCB;
// iterate the pointer of 4
current = (IntPtr)((int)current+4);
Kill.dwLocalAddr=(int)Marshal.ReadIntPtr(current);
current = (IntPtr)((int)current+4);
Kill.dwLocalPort=(int)Marshal.ReadIntPtr(current);
current = (IntPtr)((int)current+4);
Kill.dwRemoteAddr=(int)Marshal.ReadIntPtr(current);
current = (IntPtr)((int)current+4);
Kill.dwRemotePort=(int)Marshal.ReadIntPtr(current);
IntPtr pt=Marshal.AllocHGlobal(Marshal.SizeOf(Kill));
Marshal.StructureToPtr(Kill,pt,true);
IPHelp.SetTcpEntry(pt);
problem 2 : What event happen when a port is opening.Is there any
message that I hook on it.
thanks
|
|
|
|
|
If you have a question specific to an article, ask on the article's message board. That's what it's there for.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I'm currently working with windows desktop application. I have this installation package for my software as well, but when I install, then everything is just fine. Later, when I try to start my program from start menu, then it starts installation again. Why does this installation start?
Is there something wrong with this VS2003 installpackages? Application is written in C#.
|
|
|
|
|
hi forum,
I have made a signed XML document with MS Infopath 2003.
Is possible to extract a X.509 Certificate from the XML document and import it to a CAPICOM.Certificate class or a System.Security.Cryptography.X509Certificate class?
thanks in advance.
|
|
|
|
|
You can use the classes in the System.Security.Cryptography.Xml namespace to get the SignedXml.SigningKey , which is an AsymmetricAlgorithm . From that an other information you can reconstruct the X.509 certificate that contains the public key.
While I don't cover this topic exactly, you might find some helpful hints in my article, Using XML Digital Signatures for Application Licensing[^]. Both this and the signatures used by InfoPath use the industry standard XML Digital Signature specification. You can find more information about that on the W3C[^] site as WS-Signature.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
thank you,
finally, i did this:
<br />
<br />
System.Xml.XmlNodeList nodeList = XmlDoc.GetElementsByTagName("X509Certificate");<br />
XmlNode node = (XMLNode)nodelist[0];<br />
CAPICOM.Certificate certificates = new CAPICOM.CertificateClass()<br />
certificate.Import(node.InnerText);<br />
<br />
..and it seems that works well
|
|
|
|
|
What are you confused about? The InnerText is the base64-encoded X.509 certificate, so Import should have no problem reading it (as long as such a method accepts base64-encoded text, which that one obviously does).
You should really try to avoid interop'ing the CryptoAPI, however. Most of the functionality you most likely need is already in the .NET Framework SDK. Mixing like this creates additional requirements, not to mentioning that marshaling data types from managed to unmanaged code can be very time consuming for certain types.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
ok. i'll try to do it without CryptoAPI.
thank you.
|
|
|
|
|
Hello all,
I am writing a app in C# and would like some direction on threads. I have the UI classes that includes a another non UI class and the ui class regesters events with the worker class. I want the worker class to take care of doing work in another thread. so the UI hooks up event calls something in the worker class and the worker class creates a new thread does some work and then trigger the event, but it need to call the event back on the UI thread. Any ideas on how to do this? Or a better design? Ideally I would like a good article or example etc. to look at/read. Thanks
Luke
|
|
|
|
|
C# Worker Thread Starter Kit[^]
Gary
"A fellow with the inventiveness of Albert Einstein but with the attention span of Daffy Duck."
Tom Shales talking about Robin Williams
|
|
|
|
|
My C# project needs to open a picture from an existent filepath,
after some processes, write back with the same filename.
I used filestream to open and save my file,
<br />
using(FileStream open = new FileStream(path,FileMode.Open,FileAccess.ReadWrite,FileShare.ReadWrite))<br />
{<br />
using (Image img = Image.FromStream(open))<br />
myPicture.PictureBox.Image = (Image)img.Clone(); <br />
}<br />
...<br />
...<br />
using(FileStream saveStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite,FileShare.ReadWrite))<br />
{<br />
PictureBox.Image.Save(saveStream,System.Drawing.Imaging.ImageFormat.Bmp);<br />
}<br />
I can open my picture and show it successfully,
but when I want to save,
there's always "A generic error occurred in GDI+" message except the first time,
I find it seems to be the problem of permission,
but I don't know the solution.
Can anyone tell me how to solve it...??
Thanks a lot!!
|
|
|
|
|
Hello!
I have the following problem: I want to open a file that is permanently opened for write operations by another application. It is a log file.
I always encounter the same problem: the file is already opened and I couldn't find any method to open it anyway.
The purpose is to check the log from time to time without writing anything, just as easy as opening it with Notepad (which works just fine).
Is there a way to open it?
10x!
|
|
|
|
|
Open the file as readonly while permitting other applications to write to it - which is probably what Notepad is doing.
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
The Second EuroCPian Event will be in Brussels on the 4th of September
Can't manage to P/Invoke that Win32 API in .NET? Why not do interop the wiki way!
|
|
|
|
|
You need to request shared read access like so:
FileStream file = new FileStream(path, FileMode.Open,
FileAccess.Read, FileShare.Read);
using (file)
{
} If you don't request shared read access or simply read access, then no sharing is assumed and read/write access will also be assumed (which isn't allowed since the logging application has denied shared write access).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
hi all,
does anyone know how to lock tables with ms sql?
thanks guys,
chris
|
|
|
|
|
|
Probably this post is better suited to the SQL/ADO forum...
Anyway, to lock a table exclusively for the duration of the command, include the directive (TABLOCKX) after the table name, for example SELECT * FROM Customers (TABLOCKX) .
my blog
|
|
|
|