Avatar billede Nervatos Seniormester
20. november 2012 - 16:05 Der er 19 kommentarer

UDP port, allerede i brug

Hej alle!

Jeg får en fejl når jeg kører min void, hvor den pt. connecter til CS.

public void test()
{
int port = 5001;
UdpClient udp = new UdpClient(port);
}

Den virker fint nok første gang, men kører jeg den igen, så fejler den. Jeg får følgende fejl:
"Normalt må en socket-adresse (protokol/netværksadresse/port) kun bruges én gang"

Er klar over, at den selvfølgelig ikke kan køres igen. Men jeg har prøvet at smide try catch på. Men jeg har bare ikke mulighed for at lukke den, som jeg gerne ville (udp.Close()).

Er der nogen, som kan løse denne for mig?
Avatar billede arne_v Ekspert
20. november 2012 - 23:55 #1
Det varer normalt lidt tid fra applikationen lukker en port til at den er klar til en ny applikation.
Avatar billede Nervatos Seniormester
21. november 2012 - 18:54 #2
Det er i samme applikation, Arne.

Der må vel findes en løsning, på en eller anden måde?
Avatar billede arne_v Ekspert
21. november 2012 - 19:02 #3
Om det er X open X close Y open Y close eller X open X close X open Y close tror jeg ikke goer nogen forskel.

Andet end at det er nemmere at loese. Naar det er samme app kan du jo undlade at lukke og genbruge.
Avatar billede Nervatos Seniormester
21. november 2012 - 20:49 #4
Jamen problemet er, hvis serveren har været nede og den skal etablere forbindelse igen. Så siger den porten allerede er i brug.

Det er mere det, hvor jeg har brug for en løsning.
Avatar billede arne_v Ekspert
21. november 2012 - 22:19 #5
Er det kode for den server som er genstartet eller kode for den klient som snakker med den server som er genstartet?
Avatar billede arne_v Ekspert
21. november 2012 - 22:19 #6
Og der er ikke noget som hedder forbindelse i UDP.
Avatar billede Nervatos Seniormester
22. november 2012 - 13:47 #7
Det er når CS serveren går ned, så kan min applikation ikke køre videre med den port.

Jeg kan jo ikke åbne alle porte pga. det. Så det ville jo være fedt, hvis man kunne lukke evt. porte ned som bliver brugt.
Avatar billede arne_v Ekspert
22. november 2012 - 18:06 #8
Du har en client app som er skrevet i C#.

Den kommunikerer via UDP med en CS server.

CS server bliver genstartet.

Korrekt?

Og hvorfor skulel der vaere behov for at goere noget som helst paa client? (med TCP skulle du reconnecte men UDP er anderledes)
Avatar billede Nervatos Seniormester
23. november 2012 - 16:32 #9
Ja det er korrekt.

Fordi det kører over en UDP socket. Derfor jeg bruger UDP.
Avatar billede arne_v Ekspert
23. november 2012 - 16:56 #10
Du har ikke forklaret hvorfor det er noedvendigt at lave en ny UdpClient.
Avatar billede Nervatos Seniormester
24. november 2012 - 17:38 #11
For at komme i kontakt med serveren igen.

Den skal bruge en log port for at modtage data. Hvis porten er i brug, så skal den lukke den ned og starte en ny op igen. (Samme port nummer).
Avatar billede arne_v Ekspert
24. november 2012 - 19:29 #12
Jeg gentager: UDP har ikke noget forbindelse begreb.

Du behoever ikke at goere noget for at client og server kan sende til hinanden igen.

Hvis der er noget hoejere oppe i protokol laget som skal reinitialiseres, saa kan du goere det med samme UdpClient.
Avatar billede Nervatos Seniormester
25. november 2012 - 13:30 #13
Jamen den skal bruge en log port via UDP, og hvis den allerede er i brug, så skal den lukkes ned og startes op igen.

Hvis jeg blot kører samme UDP, så kommer den med fejl. At porten allerede er i brug..
Avatar billede arne_v Ekspert
25. november 2012 - 15:38 #14
Hvis du undlader at lave en ny UdpClient kan den naeppe sige at porten er i brug!
Avatar billede Nervatos Seniormester
25. november 2012 - 19:04 #15
Ja, men hvad så med "UdpClient udp = new UdpClient(port);"

Jeg skal jo bruge udp med log porten i selve scriptet.
Avatar billede arne_v Ekspert
25. november 2012 - 19:09 #16
Hvis ikke client har vaeret genstartet, saa har du jo stadig den gamle UdpClient eller hvad?
Avatar billede Nervatos Seniormester
01. december 2012 - 17:56 #17
Jeg kører den i en foreach, så jeg f.eks. kan køre flere servere.
Men ellers ja, så er den stadig sat. Problemet er bare, at jeg modtager bare ikke info. Før den får en ny log port.
Avatar billede arne_v Ekspert
01. december 2012 - 21:30 #18
skal der laves noget handshake/login med serveren?
Avatar billede Nervatos Seniormester
02. december 2012 - 11:07 #19
Nej, det eneste login der er, det er via rcon password. Men det bliver sendt til serveren, for at den kan modtage data.
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