Hey Leute,
irgendwie kapiere ich das einfach nicht. Ich will mir eine Library schreiben worüber ich eine TCP Connection zu meinem Haus Server öffne, und mit dort enthaltenden Funktionen Statuse von Objekten in unserer Haussteuerungs Software abfragen. Nun scheitere ich daran, das ich die Connection offen halte. Ich möchte nämlich nicht die ganze Zeit die Connection neu öffnen und direkt wieder schließen.
Irgendwie funktioniert das nicht wirklich. Meine Kenntnisse sind auch noch nicht so extrem weit, also wäre Hilfe ganz nett. Bin diesen Monat auch noch nicht wirklich zum C# programmieren gekommen obwohl ich letzten erst damit angefangen habe.
Ich hoffe auf Hilfe.
MFG Nils
irgendwie kapiere ich das einfach nicht. Ich will mir eine Library schreiben worüber ich eine TCP Connection zu meinem Haus Server öffne, und mit dort enthaltenden Funktionen Statuse von Objekten in unserer Haussteuerungs Software abfragen. Nun scheitere ich daran, das ich die Connection offen halte. Ich möchte nämlich nicht die ganze Zeit die Connection neu öffnen und direkt wieder schließen.
C#-Quellcode
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Net.NetworkInformation;
- using System.Net.Sockets;
- using System.Text;
- using System.Threading.Tasks;
- namespace HomePuterExecuteLibrary
- {
- public class Lib
- {
- private static System.Net.Sockets.TcpClient tcpClient;
- private static System.Net.Sockets.NetworkStream networkStream;
- private static System.IO.StreamReader streamReader;
- private static System.IO.StreamWriter streamWriter;
- private static String pw = "";
- public static void openConnection(String ip, int port)
- {
- //tcpClient.Connect(ip, port);
- tcpClient = new System.Net.Sockets.TcpClient(ip, port);
- networkStream = tcpClient.GetStream();
- streamReader = new System.IO.StreamReader(networkStream);
- streamWriter = new System.IO.StreamWriter(networkStream);
- streamWriter.AutoFlush = true;
- }
- public static void closeConnection()
- {
- streamReader.Close();
- streamWriter.Close();
- networkStream.Close();
- tcpClient.Close();
- }
- public static string writeintoconnection(String va)
- {
- streamWriter.Write(va);
- string response = streamReader.ReadLine();
- return response;
- }
- public static string getStatusFromString(string d)
- {
- string[] tokens = d.Split('=');
- return tokens[tokens.Length - 1];
- }
- public static string getStatus(String obje)
- {
- String re = writeintoconnection(pw + " G" + obje);
- if (re.Equals("access denied"))
- {
- return "acces denied.";
- }
- if (String.IsNullOrWhiteSpace(re))
- {
- return "Get Empty Response.";
- }
- String status = getStatusFromString(re);
- return status;
- }
- public static Boolean isConnected()
- {
- if (tcpClient.Connected == true)
- {
- return true;
- } else
- {
- return false;
- }
- }
- /*
- public static bool IsConnected
- {
- get
- {
- try
- {
- if (tcpClient != null && tcpClient.Client != null && tcpClient.Client.Connected)
- {
- if (tcpClient.Client.Poll(0, SelectMode.SelectRead))
- {
- byte[] buff = new byte[1];
- if (tcpClient.Client.Receive(buff, SocketFlags.Peek) == 0)
- {
- return false;
- }
- else
- {
- return true;
- }
- }
- return true;
- }
- else
- {
- return false;
- }
- }
- catch
- {
- return false;
- }
- }
- }*/
- }
- }
Irgendwie funktioniert das nicht wirklich. Meine Kenntnisse sind auch noch nicht so extrem weit, also wäre Hilfe ganz nett. Bin diesen Monat auch noch nicht wirklich zum C# programmieren gekommen obwohl ich letzten erst damit angefangen habe.
Ich hoffe auf Hilfe.
MFG Nils