Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C# Perl socket
I have two system that I need to get talking together over sockets (preferably TCP).
I tried a Perl client to a C# socket server but the Perl client stopped after sending the message, I think there was an acknowledgement problem.
Does anyone have experience of this?
I have Perl-Perl and C#-C# working fine.
Thanks.
Posted 10-Feb-11 14:38pm
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hard to say without seeing the implementations, but sockets are supposed to be language agnostic, so one of your implementations has a bug (or perhaps both).
  Permalink  
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

Got it working, test sample below (runs in a separate thread):
        public void Listen()
        {
            int ByteRead;
            IPAddress ipAddress = Dns.GetHostAddresses("localhost")[0];
            TcpListener tcpListener = new TcpListener(IPAddress.Any, 399);
            TcpClient tcpClient;
#if CONSOLE_DEBUG
            Console.WriteLine("Socket created.");
#endif
            while (true)
            {
#if CONSOLE_DEBUG
                Console.WriteLine("Listener created.");
#endif
                while (true)
                {
                    try 
                    {
                        tcpListener.Start();
                    }
                    catch ( SocketException se)
                        {
                            Console.WriteLine(se.Message);
                        }
                    tcpClient = tcpListener.AcceptTcpClient();
                    NetworkStream ns = tcpClient.GetStream();
                    while ((ByteRead = ns.ReadByte()) <= 0) { };    // Wait until a non zero byte is received
                    Console.WriteLine("Length = {0}", ByteRead);
                    string TempStr = new string(' ', 0);
                    for (int loop = 0; loop < ByteRead; loop++)
                    {
                        TempStr += (char)ns.ReadByte();
                    }
                    Console.WriteLine("\"{0}\" received", TempStr);
                    lock (TextBox1)
                    {
                        //TextBox1.AppendText(string.Format("{0}\r\n", TempStr));
                    }
                    ns.Close();
                }
                tcpClient.Close();
                Console.WriteLine("Listen ended.");
            }
        } 
  Permalink  

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 OriginalGriff 480
1 Maciej Los 304
2 Richard MacCutchan 225
3 BillWoodruff 169
4 Suraj Sahoo | Coding Passion 155
0 OriginalGriff 8,759
1 Sergey Alexandrovich Kryukov 7,407
2 DamithSL 5,639
3 Maciej Los 5,269
4 Manas Bhardwaj 4,986


Advertise | Privacy | Mobile
Web04 | 2.8.1411028.1 | Last Updated 16 Feb 2011
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100