Looky
Erfahrenes Mitglied
Moin Moin und frohes neues,
Also, das Jahr startet direkt mit einem Problem. (Nutze Java 5)
Ich habe eine Schnittstelle zu einem anderen Gerät. Dieses Gerät besitzt eine Ethernetschnittstelle, an die ich einen Socket binde. Wenn ich eine Nachricht rausschicken will muß ich offensichtlich ein flush machen, allerdings schließt er somit den Outputstream und damit auch den socket (oder seh ich das falsch?)
Was muß ich ändern, um den Socket immer wieder nutzen zu können...?
D.h. der Socket soll offen bleiben, solange die Applikation läuft...
Hier der wichtige Ausschnitt meines bisherigen Codes
Danke..
Also, das Jahr startet direkt mit einem Problem. (Nutze Java 5)
Ich habe eine Schnittstelle zu einem anderen Gerät. Dieses Gerät besitzt eine Ethernetschnittstelle, an die ich einen Socket binde. Wenn ich eine Nachricht rausschicken will muß ich offensichtlich ein flush machen, allerdings schließt er somit den Outputstream und damit auch den socket (oder seh ich das falsch?)
Was muß ich ändern, um den Socket immer wieder nutzen zu können...?
D.h. der Socket soll offen bleiben, solange die Applikation läuft...
Hier der wichtige Ausschnitt meines bisherigen Codes
Code:
addr = InetAddress.getByName(dp_url.getHost());
// Creates a stream socket and connects it to
// the specified port number at the specified IP address
if (MstDefMachine.useProxy)
so = new ProxySocket(MstDefMachine.proxyHost, MstDefMachine.proxyPort, dp_url.getHost(), DEFAULT_PORT);
else
so = new Socket(addr, DEFAULT_PORT);
// Enable SO_LINGER with 0 seconds
// The maximum timeout value is platform specific. The setting only affects socket close.
so.setSoLinger(true, 0);
so.setSoTimeout(REQUEST_TIMEOUT);
// gets an output stream for this socket
out = new PrintWriter(so.getOutputStream());
inr = new BufferedReader(new InputStreamReader(so.getInputStream(), "UTF8"));
strHttpOut = "POST / HTTP/1.1\r\nContent-Type: text/xml; charset=utf-8\r\nSOAPAction: " + action + "\r\nContent-Length:" + Integer.toString(req.length())
+ "\r\n\r\n" + req;
out.println(strHttpOut);
out.flush();
while (true) {
if (inr.ready()) {
for (int i = 0; i < 2048; i++)
strR[i] = 0;
while ((count = inr.read(strR, 0, 2048)) > 0) {
if (strR[0] == 0)
break;
//strResponse = strResponse + (new String(strR, 0, count));
sb.append(new String(strR, 0, count));
}
strResponse = sb.toString();
sb = null;
inr.close();
Danke..