Avatar billede trenskow Nybegynder
21. marts 2005 - 16:20 Der er 11 kommentarer og
1 løsning

Hjælp til .NET og Java interoperabilitet I

Hejsa
Sidder lige og læser arne_v's artikel om ".NET og Java interoperabilitet I"

Jeg har smidt koden i et program som jeg allerede har. Mit problem er bare, at når jeg starter programmet, så stopper det, og venter på connections... den kan ingenting lave imens... hvordan laver jeg, så at den står og lytter på porten, samtidig med at programmet kan arbejde videre... skal selve klassen så laves til en tråd?

Det er koden om C# server jeg snakker om her :-)
Avatar billede soes Nybegynder
21. marts 2005 - 16:25 #1
Du bør lave en tråd som står og lytter efter indkommende forbindelser. Herved kan hovedprogrammet stadig arbejde vidre.
Avatar billede arne_v Ekspert
21. marts 2005 - 16:55 #2
Mine eksempler i den kode er "rene" servers apps d.v.s. at de laver ikke
andet end at lytte efter connection sog starte en tråd per connection.

Som soes siger så kan du bare starte en tråd til listener.

(jeg tror også jeg har et sådan eksempel liggende, men der er ikke noget
som helst specielt i det)
Avatar billede trenskow Nybegynder
21. marts 2005 - 18:52 #3
Nej, der er sikkert ikke noget besværligt i det, men efter at have læst om socket og asyncron socket, i flere timer snart, så er jeg forvirret.. :-)
Jeg troede jeg vidste det, men
(new Thread(new ThreadStart(srv.Start))).Start();
var den ikke lige enig med mig i....
Avatar billede arne_v Ekspert
21. marts 2005 - 19:00 #4
Det ser ellers meget rigtigt ud !

Hvilken fejl får du ?
Avatar billede arne_v Ekspert
21. marts 2005 - 19:00 #5
Husk at argumenter skal ind via constructor !
Avatar billede trenskow Nybegynder
21. marts 2005 - 19:20 #6
ok
Her er min klasse

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace ServerTc45test2.TC45
{
    /// <summary>
    /// Summary description for Decoder.
    /// </summary>
    public class Decoder
    {
        /// <summary>
        /// Start C# server.
        /// </summary>

        public Decoder()
        {
            TcpListener srv = new TcpListener(IPAddress.Any, 12345);
            (new Thread(new ThreadStart(srv.Start))).Start();
            //srv.Start();
            while(true)
            {
                // accepter connection fra client
                TcpClient cli = srv.AcceptTcpClient();              <-----------------------fejlen er her
                // start tråd til at håndtere client
                TextClientHandler tch = new TextClientHandler(cli);
                (new Thread(new ThreadStart(tch.Run))).Start();
            }           
            //
            // TODO: Add constructor logic here
            //
        }
    }
}




og her er min fejlmeddelelse....
An unhandled exception of type 'System.InvalidOperationException' occurred in system.dll

Additional information: Der lyttes ikke. Kald metoden Start().
Avatar billede arne_v Ekspert
21. marts 2005 - 19:35 #7
Ja det duer ikke.

Prøv:

        public Decoder()
        {
            (new Thread(new ThreadStart(Listen))).Start();
        }
        public void Listen()
        {
            TcpListener srv = new TcpListener(IPAddress.Any, 12345);
            srv.Start();
            while(true)
            {
                // accepter connection fra client
                TcpClient cli = srv.AcceptTcpClient();
                // start tråd til at håndtere client
                TextClientHandler tch = new TextClientHandler(cli);
                (new Thread(new ThreadStart(tch.Run))).Start();
            }         
            //
            // TODO: Add constructor logic here
            //
        }
Avatar billede trenskow Nybegynder
21. marts 2005 - 19:36 #8
Hov.. jeg tror jeg fandt mit problem... det virker i alle fald... :-)
Avatar billede trenskow Nybegynder
21. marts 2005 - 21:03 #9
Tak for hjælpen begge 2
Hvis i begge vil ligge et svar, så er der point... i havdre jo ret.. begge to :-)
Avatar billede arne_v Ekspert
21. marts 2005 - 21:04 #10
ok
Avatar billede soes Nybegynder
22. marts 2005 - 10:30 #11
Jeg springer bare over
Avatar billede arne_v Ekspert
10. april 2005 - 17:35 #12
Tid at få afsluttet ?
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