Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Problemi strani con server e client
Forum - C# / VB.NET - Problemi strani con server e client - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
punkettone90 (Member)
Expert


Messaggi: 279
Iscritto: 16/05/2007

Segnala al moderatore
Postato alle 12:07
Martedì, 14/04/2009
allora un'attimo, prima dici che secondo te il programma va in crash dopo che un utente si disconnette, adesso dici che dopo aver sistemato alcune cose il problema sta nell'aggiornamento della lista; non ho capito se il programma va in crash o se entra in un loop infinito, se va in crash scrivi l'errore che ti dice l'IDE e anche la riga in cui il programma è andato in crash

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 16:05
Martedì, 14/04/2009
Codice sorgente - presumibilmente VB.NET

  1. Private Sub update_serv()
  2.   Dim list As String()
  3.   Dim str, msg As String
  4.   Dim cl_nmb As Integer=0
  5.   Do
  6.    'aggiorno lista client connessi
  7.    If(service.get_address_num()<>0)
  8.     If(cl_nmb<>service.get_address_num())
  9.       list=service.get_addr_list()
  10.      lstClA.Items.Clear()
  11.      For Each str In list
  12.       lstClA.Items.Add(str)
  13.      Next    
  14.      cl_nmb=service.get_address_num()
  15.     End If  
  16.     'aggiorno log dei messaggi
  17.     list=service.get_addr_list()
  18.     For Each str In list
  19.      If(service.get_msg_num(str)<>0)
  20.                         tx.Text += str + vbCrLf
  21.  
  22.  
  23.                         '' da Qui ricevo l'ip del cliente
  24.                        
  25.                         ultimomessaggio = str
  26.  
  27.  
  28.  
  29.                         For Each msg In service.get_messages(str)
  30.  
  31.  
  32.  
  33.                            
  34.                             tx.Text += msg
  35.  
  36.                             comandi(msg, str)
  37.  
  38.                         Next
  39.      End If
  40.     Next    
  41.    End If  
  42.   Loop



l'ide segna l'errore al next sotto a comandi(msg,str)
crasha e basta non da altre spiegazioni.



https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:22
Mercoledì, 15/04/2009
Se segna solo la parte di codice in giallo, forse hai disattivato le eccezioni. Vai su Debug > Gestione eccezioni (Exceptions): nella voce Common Language Runtime Exceptions spunta Thrown.

PM Quote
Avatar
Thejuster (Admin)
Guru^2


Messaggi: 2305
Iscritto: 04/05/2008

Segnala al moderatore
Postato alle 21:10
Mercoledì, 15/04/2009
adesso dà un errore qui

Codice sorgente - presumibilmente VB.NET

  1. Public Function get_addr_list()as String()
  2.   Dim ret_str As String()
  3.   'per tutti i client presenti
  4.   If(socket_list.Count()<>0)
  5.    For i=0 to socket_list.Count()-1
  6.     'aggiunto l'indirizzo nella lista
  7.     ReDim ret_str(i)'(ridimensiono il vettore)
  8.    
  9.  
  10.  --->    ret_str(i)=socket_list(i).get_address
  11.   giallo
  12.  
  13.  
  14.    Next i    
  15.   Else
  16.    ReDim ret_str(1)
  17.    ret_str(0)=""
  18.   End If
  19.   'ritorno la lista
  20.   Return ret_str
  21.  End Function



{"Index non compreso nell'intervallo. Richiesto valore non negativo e minore della dimensione dell'insieme. Nome parametro: index"}


https://mire.forumfree.it/ - Mire Engine
C# UI Designer
PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 19:13
Giovedì, 16/04/2009
Sorvolando sulla pulizia del codice, che lascia a desiderare :D non dovrebbe dare errore di indice quando hai espressamente scritto che l'indice massimo deve essere i. Magari, riscrivendo meglio il codice puoi individuare l'errore, infatti: ReDim cancella tutta la collezione; per non cancellarla devi usare ReDim Preserve, che comunque è inutile dato che la dimensione la conosci; tra parentesi della collezione argomento di ReDim va l'indice massimo e non il numero di elementi come hai fatto - penso - dopo l'else. Riprova così:
Codice sorgente - presumibilmente VB.NET

  1. Public Function GetAddressList() As String()
  2.   Dim Result() As String
  3.   If socket_list.Count() > 0 Then
  4.     ReDim Result(socket_list.Count() - 1)
  5.     For I As Int16 = 0 To socket_list.Count() - 1
  6.       Result(I) = socket_list(I).get_address()
  7.     Next
  8.   End If
  9.   Return Result
  10. End Function


PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo