Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 15:10 Der er 17 kommentarer og
2 løsninger

Få ip adresse på klient

Jeg har en server applikation og en klient til den. Når serveren kører kan klienterne så logge på serveren. Men hvordan for jeg klienternes ip adresser

Hver enkelt klient forbindelse ligger i sådan en her

private Socket[] m_workerSocket = new Socket[10];

Nogen der lige kan hjælpe?
Avatar billede alex_sleiborg Nybegynder
11. januar 2006 - 15:15 #1
Har prøvet noget i denne stil, men det virker ikke helt


foreach (Dns.GetHostAddresses adr in m_workerSocket)
                {
                    MessageBox.Show(adr);
                }
Avatar billede arne_v Ekspert
11. januar 2006 - 15:18 #2
kan du ikke fiske det ud af

m_workerSocket[i].RemoteEndPoint

?
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 16:03 #3
Hva står det [i]for?
Avatar billede Syska Mester
12. januar 2006 - 16:05 #4
Meningen du nok skal bruge den i en "for" løkke...

// oT
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 16:14 #5
Jeg kan stadig ikke rigtig få det til at virke. Kan i evt lave et eksempel?
Avatar billede Syska Mester
12. januar 2006 - 16:22 #6
Socket[] test = new Socket[10];
for (int i = 0; i < test.Length; i++)
{
    test[i].RemoteEndPoint;
}

// ouT
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 16:28 #7
Det kan man ikke

Error    2    Only assignment, call, increment, decrement, and new object expressions can be used as a statement    C:\Documents and Settings\Administrator\Dokumenter\Visual Studio 2005\Projects\LoginSystem2005\LoginSystem2005\Connection.cs    110    21    LoginSystem2005

til

test[i].RemoteEndPoint;
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 16:36 #8
Har fået det til at virke :)

Smid et svar begge 2


Og mange tak
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 16:40 #9
Lige en sidste ting

Jeg får fejl under runtime, den giver mig godt nok klientens ip. Og så kommer fejlen


Object reference not set to an instance of an object.

Til den her linje

MessageBox.Show(m_workerSocket[i].RemoteEndPoint.ToString());
Avatar billede Syska Mester
12. januar 2006 - 17:01 #10
Fordi nummer 1 i dit array nok ikke er sat til ngoet endnu...

if(m_workerSocket[i].RemoteEndPoint != null)
MessageBox.Show(m_workerSocket[i].RemoteEndPoint.ToString());
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 17:05 #11
Sat til noget? Hva mener du

Får nu stadig samme fejl
Avatar billede arne_v Ekspert
12. januar 2006 - 17:05 #12
eller hvis du ved hvor mange der er i brug så kan du lade løkken
løbe:

for(int i = 0; i < faktiskantal; i++)
Avatar billede Syska Mester
12. januar 2006 - 17:09 #13
Det kan vel blive et problem hvis en klient[0] disconnector... Så kan man i hvert fald flytte rundt på dem som er tilbage så den altid er fyldt op fra starten af Array'et

// ouT
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 17:13 #14
Det her virker :)

for (int i = 0; i < m_clientCount; i++)
                {
                    MessageBox.Show(m_workerSocket[i].RemoteEndPoint.ToString());
                }

Tak begge 2
Avatar billede arne_v Ekspert
12. januar 2006 - 17:17 #15
det er rigtigt - hvis slotsene skal tømmes igen, så virker den for løkke ikke
igen, men i så fald ville jeg anbefale en ArrayList fremfor et array og
så fjerne dem fra ArrayList'en
Avatar billede Syska Mester
12. januar 2006 - 17:25 #16
Ja, der er noget om det :-)
Avatar billede alex_sleiborg Nybegynder
12. januar 2006 - 17:29 #17
Okay, så i synes altså jeg skal ændre det til et arraylist i stedet for?

Lige et lille side spørgsmål

Jeg vil have puttet IP adresserne ind i en listview, og jeg har gjort det således. Men det ser ikke rigtig ud til at virke

foreach (String r in m_workerSocket[i].RemoteEndPoint.ToString())
                    {
                        System.Windows.Forms.ListViewItem listViewItem1 = new System.Windows.Forms.ListViewItem(new string[] {r}, -1);
                        this.lsv_Clients.Items.Add(listViewItem1);
                    }
Avatar billede arne_v Ekspert
12. januar 2006 - 17:56 #18
hvis du skal have nogen ud af listen igen
Avatar billede arne_v Ekspert
12. januar 2006 - 17:57 #19
foreach (String r in m_workerSocket[i].RemoteEndPoint.ToString())

duer ikke da m_workerSocket[i].RemoteEndPoint.ToString() er en enkelt streng
og ikke noget du kan foreach'e over
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