Salve,
ho realizzato due semplici applicazioni vb, un server e un client, utilizzando i Winsock controls e le ho provato sulla stessa macchina (localhost="127.0.0.1").
Il codice del server è:
Public Class Form1
Dim Winsock1 As MSWinsockLib.Winsock = New MSWinsockLib.Winsock
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Winsock1.LocalPort = 3001
Winsock1.Listen()
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Dim sckClosed As Integer = 0
If Winsock1.State <> sckClosed Then Winsock1.Close()
Winsock1.Accept(requestID)
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim strIncoming As String
Winsock1.GetData(strIncoming)
MsgBox(strIncoming)
End Sub
End Class
mentre quello del client è:
Public Class Form1
Dim Winsock1 As MSWinsockLib.Winsock = New MSWinsockLib.Winsock
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Winsock1.RemoteHost = "127.0.0.1"
Winsock1.RemotePort = 3001
Winsock1.Connect()
Dim sckConnected As Integer = 7
Do Until Winsock1.State = sckConnected
DoEvents:
Loop
Winsock1.SendData(txtMessage.Text)
Winsock1.Close()
End Sub
End Class
Lancio prima il server che si mette correttamente in ascolto sulla porta "0.0.0.0:3001"; quando mi connetto col client lo stato della connessione mi rimane su "Connecting" e la connessione stessa non mi si chiude in "Connected": in pratica rimango nel ciclo "Do Until".
In particolare con "NETSTAT -na":
TCP 127.0.0.1:2010 127.0.0.1:3001 CLOSE_WAIT
TCP 127.0.0.1:3001 127.0.0.1:2010 FIN_WAIT_2
Qualcuno sa aiutarmi?
Grazie