Hoi,
Voor een projectje wil ik een Java applicatie met een VB.NET applicatie laten babbelen via een socket... Op zich werkt dit, maar het werkt helaas maar een keer... De bedoeling is dat de VB applicatie een socketserver is die even met een client praat, en als dit klaar is weer wacht op een volgende verbinding...
Met de huidige code werkt alles prima als de java applicatie wordt opgestart. Maar als deze applicatie klaar is en ik hem dan vervolgens weer op wil starten krijg ik vanuit de java kant een "IOException: java.net.SocketException: Connection reset" melding... Er is van de data (text) die van de client naar de server gestuurd wordt EEN karakter verzonden.....
-Na nog wat meer onderzoek:-
Na de eerste run lijkt de VB applicatie nog maar EEN karakter te willen ontvangen...
Als ik vanuit de client dus maar EEN karakter verstuur gaat het wel goed...
Suggesties? (Nee, een karakter tegelijk versturen is geen optie
)
De VB.Net code zien er als volgt uit:
*******************************************
*******************************************
Ik ben zelf niet zo heel erg thuis in VB en ik heb dit stukje code dus op internet gevonden... Het was oorspronkelijk bedoeld op 1x te lopen en dan te stoppen. Ik heb er echter een loopje in gestopt zodat hij weer op een nieuwe verbinding zou wachten...
Kan iemand mij vertellen wat hier mis gaat??
thanx...
Voor de volledigheid volgt hier ook nog de Java method:
Voor een projectje wil ik een Java applicatie met een VB.NET applicatie laten babbelen via een socket... Op zich werkt dit, maar het werkt helaas maar een keer... De bedoeling is dat de VB applicatie een socketserver is die even met een client praat, en als dit klaar is weer wacht op een volgende verbinding...
Met de huidige code werkt alles prima als de java applicatie wordt opgestart. Maar als deze applicatie klaar is en ik hem dan vervolgens weer op wil starten krijg ik vanuit de java kant een "IOException: java.net.SocketException: Connection reset" melding... Er is van de data (text) die van de client naar de server gestuurd wordt EEN karakter verzonden.....
-Na nog wat meer onderzoek:-
Na de eerste run lijkt de VB applicatie nog maar EEN karakter te willen ontvangen...
Als ik vanuit de client dus maar EEN karakter verstuur gaat het wel goed...
Suggesties? (Nee, een karakter tegelijk versturen is geen optie
De VB.Net code zien er als volgt uit:
*******************************************
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| Imports System.Net.Sockets
Imports System.Text
Imports System.Net
Class TCPSrv
Shared Sub Main()
' Must listen on correct port- must be same as port client wants to connect on.
Const portNumber As Integer = 8000
Dim teller As Integer
teller = 0
Do Until teller = 5
Dim server_ip_address As IPAddress
server_ip_address = IPAddress.Parse("10.1.1.6")
Dim tcpListener As New TcpListener(server_ip_address, portNumber)
tcpListener.Start()
Console.WriteLine("Waiting for connection...")
Try
'Accept the pending client connection and return a TcpClient initialized for communication.
Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()
Console.WriteLine("Connection accepted.")
' Get the stream
Dim networkStream As NetworkStream = tcpClient.GetStream()
' Read the stream into a byte array
Dim bytes(tcpClient.ReceiveBufferSize) As Byte
networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
' Return the data received from the client to the console.
Dim clientdata As String = Encoding.ASCII.GetString(bytes)
Console.WriteLine(("Client sent: " + clientdata))
Dim responseString As String = "Connected to server."
Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)
networkStream.Write(sendBytes, 0, sendBytes.Length)
Console.WriteLine(("Message Sent /> : " + responseString))
'Any communication with the remote client using the TcpClient can go here.
'Close TcpListener and TcpClient.
tcpClient.Close()
tcpListener.Stop()
Console.WriteLine("klaar")
Console.WriteLine(teller)
teller = teller + 1
Catch e As Exception
Console.WriteLine(e.ToString())
Console.ReadLine()
End Try
Loop
End Sub
End Class |
*******************************************
Ik ben zelf niet zo heel erg thuis in VB en ik heb dit stukje code dus op internet gevonden... Het was oorspronkelijk bedoeld op 1x te lopen en dan te stoppen. Ik heb er echter een loopje in gestopt zodat hij weer op een nieuwe verbinding zou wachten...
Kan iemand mij vertellen wat hier mis gaat??
thanx...
Voor de volledigheid volgt hier ook nog de Java method:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| public String sendSocketMessage(String address, int port, String data){
// declaration section:
Socket smtpSocket = null;
DataOutputStream os = null;
DataInputStream is = null;
// Initialization section:
try {
smtpSocket = new Socket(address, port);
os = new DataOutputStream(smtpSocket.getOutputStream());
is = new DataInputStream(smtpSocket.getInputStream());
} catch (UnknownHostException e) {
System.err.println("Don't know about host: "+address);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: "+address+" (Is the other socket-side running?)");
}
// If everything has been initialized then we want to write some data
// to the socket we have opened
if (smtpSocket != null && os != null && is != null) {
try {
os.writeBytes(data+"\n");
String responseLine;
while ((responseLine = is.readLine()) != null) {
System.out.println("Server: " + responseLine);
if (responseLine.indexOf("Ok") != -1) {
System.out.println("Received Ok...");
break;
}
}
// clean up:
os.close();
is.close();
smtpSocket.close();
} catch (UnknownHostException e) {
System.err.println("Trying to connect to unknown host: " + e);
} catch (IOException e) {
System.err.println("IOException: " + e);
}
}
return "ok";
} |
[ Voor 5% gewijzigd door creenmachine op 19-07-2006 10:58 ]