Avatar billede Slettet bruger
10. april 2006 - 13:35 Der er 6 kommentarer

TCPClient problemer

Hey alle sammen..

Sidder og roder med noget TCPClient.. som jeg har det nu kan client sende til server, hvor server svarer tilbage med det client skrev..

Men jeg vil gerne kunne sende noget text ved at trykke på min knap.. men, hvis jeg prøver siger den bare "The operation is not allowed on non-connected sockets."

Hvis den kan sende tilbage til client inde i Process() functionen, hvorfor kan jeg så ikke gøre det samme i SendBtn_Click?

http://www.nomorepasting.com/paste.php?pasteID=60610
Avatar billede arne_v Ekspert
10. april 2006 - 13:41 #1
det kan du vel også

men det skal naturligvis være den socket der er connected som du bruger
Avatar billede arne_v Ekspert
10. april 2006 - 13:44 #2
prøv evt. at udskrive alle exceptions og se om der er en brugbar fejl besked
Avatar billede arne_v Ekspert
10. april 2006 - 13:45 #3
catch (IOException) { }

kan jo sluge hvad som helst
Avatar billede Slettet bruger
10. april 2006 - 14:02 #4
while (true)
                {
                    TcpClient handler = listener.AcceptTcpClient();

                    if (handler != null)
                    {
                        StatusLabel1.Text = "Client accepted!";

                        ClientSocket = handler;
                        ClientStart(); 
                    }
                    else
                    {
                        break;
                    }
                }


Dette kører, min tcpclient connecter og jeg kan skrive til server..

men kører jeg så dette:


private void SendBtn_Click(object sender, EventArgs e)
        {
            try
            {
                NetworkStream networkStream = ClientSocket.GetStream();

                byte[] sendBytes = Encoding.ASCII.GetBytes("hejsa");
                networkStream.Write(sendBytes, 0, sendBytes.Length);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }



siger den:

"The operation is not allowed on a non-conntected socket"
Avatar billede Slettet bruger
10. april 2006 - 14:20 #5
torr jeg har løst problemet.. poster lige svar senere
Avatar billede Slettet bruger
11. april 2006 - 11:31 #6
Fandt ud af det.. gjorde "NetworkStream networkStream" global og brugte den til at sende og modtage, nu har jeg bare et nyt problem:

Jeg bruger dette til at modtage:

private void RecieveData()
        {
            try
            {
                while (ServerSocket.Connected)
                {
                    byte[] bytes = new byte[ServerSocket.ReceiveBufferSize];
                    int BytesRead = networkStream.Read(bytes, 0, (int)ServerSocket.ReceiveBufferSize);
                    if (BytesRead > 0)
                    {
                        string returndata = Encoding.ASCII.GetString(bytes, 0, BytesRead);
                        this.Invoke(DelegateAddRecText, new Object[] { returndata });
                    }
                }
                networkStream.Close();
                ServerSocket.Close();   
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
        }

på en seperart tråd, det virker fint bortset fra at når jeg sender:

private static void SendData()
    {
        try
        {
            byte[] sendBytes = Encoding.ASCII.GetBytes("wee");
            networkStream.Write(sendBytes, 0, sendBytes.Length);
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }

Så udfører den også recieveData fordi der jo ligger noget text i networkstream.. hvordan kan jeg få den til kun at skrive det jeg modtager, når jeg rent faktisk modtager noget :=)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester