Nachricht über TCP/IP

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Nachricht über TCP/IP

    Hallo,

    ich bin schon fast am verzweifeln.
    Ich arbeite zur Zeit mit einem iPad. Meine Aufgabe ist es, ein Programm zu schreiben, mit dem ich Nachrichten Empfangen kann. Hierzu habe ich folgendes Geschrieben:

    Quellcode

    1. - (IBAction)cmdTCP:(UIButton*)sender {
    2. NSURL *webseite = [NSURL URLWithString:@"http://www.SITE.de/"];
    3. NSURLRequest *anfrage = [NSURLRequest requestWithURL:webseite];
    4. NSURLResponse *antwort;
    5. NSError *fehler;
    6. NSData *empfangeneDaten = [NSURLConnection sendSynchronousRequest:anfrage returningResponse:&antwort error:&fehler];
    7. if (empfangeneDaten == nil) {
    8. //Fehlermeldung keine daten
    9. NSLog(@"LEER");
    10. }
    11. [NSURLConnection connectionWithRequest:anfrage delegate:self];
    12. }
    13. - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    14. NSLog(@"DATA erhalten");
    15. NSString *theData = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    16. }
    17. - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    18. NSLog(@"FEHLER erhalten");
    19. }
    20. - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    21. NSLog(@"ANTWORT erhalten");
    22. }
    23. - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    24. NSLog(@"CONNECT FINI");
    25. }
    Alles anzeigen


    Damit kann ich zB den Quellcode der Seite auslesen. Hab ich so hinbekommen...

    Wie schaffe ich es aber eine Nachricht (die mit über TCP von einem Mac gesandt wurde) zu empfangen? Ich weiß grad nicht weiter. Zumal ich auch erst den Button klicken muss :(
    Zudem frage ich mich, ist das auch ohne ein extra Programm auf dem Mac möglich, quasi über Terminal, oder muss ich ein passendes Programm für den Mac schreiben?
    Also eine Nachricht wie "Es geht!".

    Ich hoffe ihr könnt mir ein paar der offenen Fragen klären. Bin noch recht neu im iPad Programming Geschäft und fällt mir noch recht schwer.

    Danke
  • Ich weiss nicht wie das in Objective-C geht, aber du brauchst auf jeden Fall Sockets! Du schreibst dir ein Programm für Mac, das sich mit dem Server auf dem iPad verbindet, und schickts über die Sockets Nachrichten.

    Quellcode

    1. [NSStream getStreamsToHost:host port:port inputStream:&inputStream outputStream:&outputStream]



    das habe ich gefunden, kannst du dazu verwenden zum vom Mac auf das iPad Nachrichten zu senden ;)
  • spn_x schrieb:

    Zudem frage ich mich, ist das auch ohne ein extra Programm auf dem Mac möglich, quasi über Terminal, oder muss ich ein passendes Programm für den Mac schreiben?
    Also eine Nachricht wie "Es geht!".
    Also wenn ich dich richtig verstanden habe willst du ne Nachricht per TCP/IP vom Mac an das IPad schicken, richtig?
    Per Terminal geht das per "telnet" oder netcat (heisst aufm mac "nc").
    Per Netcat z.B.: nc <hostname> <port>
    Genaueres zur Benutzung bitte aus den man-pages entnehmen...


    Gruß,
    Christoph
  • Also ich habe mal ein bisschen gesucht ;)

    Hier hast du einen TCPServer, den ich von der Apple Homepage habe!

    C-Quellcode

    1. /*
    2. File: TCPServer.m
    3. Copyright © 2005 Apple Computer, Inc., All Rights Reserved
    4. */
    5. #import "TCPServer.h"
    6. #include
    7. #include
    8. #include
    9. NSString * const TCPServerErrorDomain = @"TCPServerErrorDomain";
    10. @implementation TCPServer
    11. - (id)init {
    12. return self;
    13. }
    14. - (void)dealloc {
    15. [self stop];
    16. [domain release];
    17. [name release];
    18. [type release];
    19. [super dealloc];
    20. }
    21. - (id)delegate {
    22. return delegate;
    23. }
    24. - (void)setDelegate:(id)value {
    25. delegate = value;
    26. }
    27. - (NSString *)domain {
    28. return domain;
    29. }
    30. - (void)setDomain:(NSString *)value {
    31. if (domain != value) {
    32. [domain release];
    33. domain = [value copy];
    34. }
    35. }
    36. - (NSString *)name {
    37. return name;
    38. }
    39. - (void)setName:(NSString *)value {
    40. if (name != value) {
    41. [name release];
    42. name = [value copy];
    43. }
    44. }
    45. - (NSString *)type {
    46. return type;
    47. }
    48. - (void)setType:(NSString *)value {
    49. if (type != value) {
    50. [type release];
    51. type = [value copy];
    52. }
    53. }
    54. - (uint16_t)port {
    55. return port;
    56. }
    57. - (void)setPort:(uint16_t)value {
    58. port = value;
    59. }
    60. - (void)handleNewConnectionFromAddress:(NSData *)addr inputStream:(NSInputStream *)istr outputStream:(NSOutputStream *)ostr {
    61. // if the delegate implements the delegate method, call it
    62. // if (delegate && [delegate respondsToSelector:@selector(TCPServer:didReceiveConnectionFrom:inputStream:outputStream:)]) {
    63. [delegate TCPServer:self didReceiveConnectionFromAddress:addr inputStream:istr outputStream:ostr];
    64. // }
    65. }
    66. // This function is called by CFSocket when a new connection comes in.
    67. // We gather some data here, and convert the function call to a method
    68. // invocation on TCPServer.
    69. static void TCPServerAcceptCallBack(CFSocketRef socket, CFSocketCallBackType type, CFDataRef address, const void *data, void *info) {
    70. TCPServer *server = (TCPServer *)info;
    71. if (kCFSocketAcceptCallBack == type) {
    72. // for an AcceptCallBack, the data parameter is a pointer to a CFSocketNativeHandle
    73. CFSocketNativeHandle nativeSocketHandle = *(CFSocketNativeHandle *)data;
    74. uint8_t name[SOCK_MAXADDRLEN];
    75. socklen_t namelen = sizeof(name);
    76. NSData *peer = nil;
    77. if (0 == getpeername(nativeSocketHandle, (struct sockaddr *)name, &namelen)) {
    78. peer = [NSData dataWithBytes:name length:namelen];
    79. }
    80. CFReadStreamRef readStream = NULL;
    81. CFWriteStreamRef writeStream = NULL;
    82. CFStreamCreatePairWithSocket(kCFAllocatorDefault, nativeSocketHandle, &readStream, &writeStream);
    83. if (readStream && writeStream) {
    84. CFReadStreamSetProperty(readStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
    85. CFWriteStreamSetProperty(writeStream, kCFStreamPropertyShouldCloseNativeSocket, kCFBooleanTrue);
    86. [server handleNewConnectionFromAddress:peer inputStream:(NSInputStream *)readStream outputStream:(NSOutputStream *)writeStream];
    87. } else {
    88. // on any failure, need to destroy the CFSocketNativeHandle
    89. // since we are not going to use it any more
    90. close(nativeSocketHandle);
    91. }
    92. if (readStream) CFRelease(readStream);
    93. if (writeStream) CFRelease(writeStream);
    94. }
    95. }
    96. - (BOOL)start:(NSError **)error {
    97. CFSocketContext socketCtxt = {0, self, NULL, NULL, NULL};
    98. ipv4socket = CFSocketCreate(kCFAllocatorDefault, PF_INET, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);
    99. ipv6socket = CFSocketCreate(kCFAllocatorDefault, PF_INET6, SOCK_STREAM, IPPROTO_TCP, kCFSocketAcceptCallBack, (CFSocketCallBack)&TCPServerAcceptCallBack, &socketCtxt);
    100. if (NULL == ipv4socket || NULL == ipv6socket) {
    101. if (error) *error = [[NSError alloc] initWithDomain:TCPServerErrorDomain code:kTCPServerNoSocketsAvailable userInfo:nil];
    102. if (ipv4socket) CFRelease(ipv4socket);
    103. if (ipv6socket) CFRelease(ipv6socket);
    104. ipv4socket = NULL;
    105. ipv6socket = NULL;
    106. return NO;
    107. }
    108. int yes = 1;
    109. setsockopt(CFSocketGetNative(ipv4socket), SOL_SOCKET, SO_REUSEADDR, (void *)&yes, sizeof(yes));
    110. setsockopt(CFSocketGetNative(ipv6socket), SOL_SOCKET, SO_REUSEADDR, (void *)&yes, sizeof(yes));
    111. // set up the IPv4 endpoint; if port is 0, this will cause the kernel to choose a port for us
    112. struct sockaddr_in addr4;
    113. memset(&addr4, 0, sizeof(addr4));
    114. addr4.sin_len = sizeof(addr4);
    115. addr4.sin_family = AF_INET;
    116. addr4.sin_port = htons(port);
    117. addr4.sin_addr.s_addr = htonl(INADDR_ANY);
    118. NSData *address4 = [NSData dataWithBytes:&addr4 length:sizeof(addr4)];
    119. if (kCFSocketSuccess != CFSocketSetAddress(ipv4socket, (CFDataRef)address4)) {
    120. if (error) *error = [[NSError alloc] initWithDomain:TCPServerErrorDomain code:kTCPServerCouldNotBindToIPv4Address userInfo:nil];
    121. if (ipv4socket) CFRelease(ipv4socket);
    122. if (ipv6socket) CFRelease(ipv6socket);
    123. ipv4socket = NULL;
    124. ipv6socket = NULL;
    125. return NO;
    126. }
    127. if (0 == port) {
    128. // now that the binding was successful, we get the port number
    129. // -- we will need it for the v6 endpoint and for the NSNetService
    130. NSData *addr = [(NSData *)CFSocketCopyAddress(ipv4socket) autorelease];
    131. memcpy(&addr4, [addr bytes], [addr length]);
    132. port = ntohs(addr4.sin_port);
    133. }
    134. // set up the IPv6 endpoint
    135. struct sockaddr_in6 addr6;
    136. memset(&addr6, 0, sizeof(addr6));
    137. addr6.sin6_len = sizeof(addr6);
    138. addr6.sin6_family = AF_INET6;
    139. addr6.sin6_port = htons(port);
    140. memcpy(&(addr6.sin6_addr), &in6addr_any, sizeof(addr6.sin6_addr));
    141. NSData *address6 = [NSData dataWithBytes:&addr6 length:sizeof(addr6)];
    142. if (kCFSocketSuccess != CFSocketSetAddress(ipv6socket, (CFDataRef)address6)) {
    143. if (error) *error = [[NSError alloc] initWithDomain:TCPServerErrorDomain code:kTCPServerCouldNotBindToIPv6Address userInfo:nil];
    144. if (ipv4socket) CFRelease(ipv4socket);
    145. if (ipv6socket) CFRelease(ipv6socket);
    146. ipv4socket = NULL;
    147. ipv6socket = NULL;
    148. return NO;
    149. }
    150. // set up the run loop sources for the sockets
    151. CFRunLoopRef cfrl = CFRunLoopGetCurrent();
    152. CFRunLoopSourceRef source4 = CFSocketCreateRunLoopSource(kCFAllocatorDefault, ipv4socket, 0);
    153. CFRunLoopAddSource(cfrl, source4, kCFRunLoopCommonModes);
    154. CFRelease(source4);
    155. CFRunLoopSourceRef source6 = CFSocketCreateRunLoopSource(kCFAllocatorDefault, ipv6socket, 0);
    156. CFRunLoopAddSource(cfrl, source6, kCFRunLoopCommonModes);
    157. CFRelease(source6);
    158. // we can only publish the service if we have a type to publish with
    159. if (nil != type) {
    160. NSString *publishingDomain = domain ? domain : @"";
    161. NSString *publishingName = nil;
    162. if (nil != name) {
    163. publishingName = name;
    164. } else {
    165. NSString * thisHostName = [[NSProcessInfo processInfo] hostName];
    166. if ([thisHostName hasSuffix:@".local"]) {
    167. publishingName = [thisHostName substringToIndex:([thisHostName length] - 6)];
    168. }
    169. }
    170. netService = [[NSNetService alloc] initWithDomain:publishingDomain type:type name:publishingName port:port];
    171. [netService publish];
    172. }
    173. return YES;
    174. }
    175. - (BOOL)stop {
    176. [netService stop];
    177. [netService release];
    178. netService = nil;
    179. CFSocketInvalidate(ipv4socket);
    180. CFSocketInvalidate(ipv6socket);
    181. CFRelease(ipv4socket);
    182. CFRelease(ipv6socket);
    183. ipv4socket = NULL;
    184. ipv6socket = NULL;
    185. return YES;
    186. }
    187. @end
    Alles anzeigen



    Quellcode

    1. /*
    2. File: TCPServer.h
    3. Copyright © 2005 Apple Computer, Inc., All Rights Reserved
    4. */
    5. #import
    6. #import
    7. NSString * const TCPServerErrorDomain;
    8. typedef enum {
    9. kTCPServerCouldNotBindToIPv4Address = 1,
    10. kTCPServerCouldNotBindToIPv6Address = 2,
    11. kTCPServerNoSocketsAvailable = 3,
    12. } TCPServerErrorCode;
    13. @interface TCPServer : NSObject {
    14. @private
    15. id delegate;
    16. NSString *domain;
    17. NSString *name;
    18. NSString *type;
    19. uint16_t port;
    20. CFSocketRef ipv4socket;
    21. CFSocketRef ipv6socket;
    22. NSNetService *netService;
    23. }
    24. - (id)delegate;
    25. - (void)setDelegate:(id)value;
    26. - (NSString *)domain;
    27. - (void)setDomain:(NSString *)value;
    28. - (NSString *)name;
    29. - (void)setName:(NSString *)value;
    30. - (NSString *)type;
    31. - (void)setType:(NSString *)value;
    32. - (uint16_t)port;
    33. - (void)setPort:(uint16_t)value;
    34. - (BOOL)start:(NSError **)error;
    35. - (BOOL)stop;
    36. - (void)handleNewConnectionFromAddress:(NSData *)addr inputStream:(NSInputStream *)istr outputStream:(NSOutputStream *)ostr;
    37. // called when a new connection comes in; by default, informs the delegate
    38. @end
    39. @interface TCPServer (TCPServerDelegateMethods)
    40. - (void)TCPServer:(TCPServer *)server didReceiveConnectionFromAddress:(NSData *)addr inputStream:(NSInputStream *)istr outputStream:(NSOutputStream *)ostr;
    41. // if the delegate implements this method, it is called when a new
    42. // connection comes in; a subclass may, of course, change that behavior
    43. @end
    Alles anzeigen



    Mit diesem Code kannst du einen Server auf dem iPad starten:

    Quellcode

    1. TCPServer *server = [[TCPServer alloc] init];
    2. [server setPort:5432];
    3. [server setDelegate:self];
    4. [server start:nil];



    Du musst jedoch noch diese Methode implementieren:

    Quellcode

    1. - (void)TCPServer:(TCPServer *)server didReceiveConnectionFromAddress:(NSData *)addr inputStream:(NSInputStream *)istr outputStream:(NSOutputStream *)ostr {
    2. NSLog(@"HALLOO");
    3. }



    in dieser Methode kannst du auf dem iPad jetzt die Nachrichten beantworten oder etwas ausführen.
  • klausel schrieb:

    gritsch schrieb:

    du brauchst kein eigenes programm am mac, du kannst die daten einfach über telnet schicken (korrekten port verwenden)

    Im Jahr 2010 telnet zu empfehlen, ist entweder fahrlässig oder boshaft.

    Hey, FIBS funktionierte (funktioniert?) auch so. Allerdings stammt das aus dem letzten Jahrtausend.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    klausel schrieb:

    gritsch schrieb:

    du brauchst kein eigenes programm am mac, du kannst die daten einfach über telnet schicken (korrekten port verwenden)

    Im Jahr 2010 telnet zu empfehlen, ist entweder fahrlässig oder boshaft.

    Hey, FIBS funktionierte (funktioniert?) auch so. Allerdings stammt das aus dem letzten Jahrtausend.
    Stimmt. Telnet ist von 1983. Was sich so lange gehalten hat, *muss* gut sein. Milliarden Fliegen können nicht irren!!1
  • klausel schrieb:

    Amin Negm-Awad schrieb:

    klausel schrieb:

    gritsch schrieb:

    du brauchst kein eigenes programm am mac, du kannst die daten einfach über telnet schicken (korrekten port verwenden)

    Im Jahr 2010 telnet zu empfehlen, ist entweder fahrlässig oder boshaft.

    Hey, FIBS funktionierte (funktioniert?) auch so. Allerdings stammt das aus dem letzten Jahrtausend.
    Stimmt. Telnet ist von 1983. Was sich so lange gehalten hat, *muss* gut sein. Milliarden Fliegen können nicht irren!!1

    Aus eben diesem Grunde wird ja auch noch C++ und Objective-C verwendet, nech?
    «Applejack» "Don't you use your fancy mathematics to muddle the issue!"

    Iä-86! Iä-64! Awavauatsh fthagn!

    kmr schrieb:

    Ach, Du bist auch so ein leichtgläubiger Zeitgenosse, der alles glaubt, was irgendwelche Typen vor sich hin brabbeln. :-P
  • klausel schrieb:

    gritsch schrieb:

    du brauchst kein eigenes programm am mac, du kannst die daten einfach über telnet schicken (korrekten port verwenden)

    Im Jahr 2010 telnet zu empfehlen, ist entweder fahrlässig oder boshaft.


    naja, es schließt eine fehlerquelle aus!

    er muss sich nicht einen server und einen client programmieren und dann testen obs geht, sondern kann sich den server basteln und dann mal mittels terminal ein "halo" senden.
    wenn das dann klappt kann er sich immer noch einen client basteln der das "halo" sendet ;)
  • klausel schrieb:

    Amin Negm-Awad schrieb:

    klausel schrieb:

    gritsch schrieb:

    du brauchst kein eigenes programm am mac, du kannst die daten einfach über telnet schicken (korrekten port verwenden)

    Im Jahr 2010 telnet zu empfehlen, ist entweder fahrlässig oder boshaft.

    Hey, FIBS funktionierte (funktioniert?) auch so. Allerdings stammt das aus dem letzten Jahrtausend.
    Stimmt. Telnet ist von 1983. Was sich so lange gehalten hat, *muss* gut sein. Milliarden Fliegen können nicht irren!!1

    Sehr wahr! Der erste GUI-Client lief unter Windows und war in C geschrieben. q.e.d.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • gritsch schrieb:

    er muss sich nicht einen server und einen client programmieren und dann testen obs geht, sondern kann sich den server basteln und dann mal mittels terminal ein "halo" senden.
    wenn das dann klappt kann er sich immer noch einen client basteln der das "halo" sendet ;)
    So entsteht 80% jeder Software im Business-Umfeld. Und bleibt dann aber auch so. LÄUFT DOCH, DA MUSS MAN NICHTS MEHR DRAN ÄNDERN!!?^

    Das Problem ist nicht das Programm Telnet. Das Problem ist, dass die Verwendung von Klartextprotokollen leider nicht unter Strafe steht. Sowohl iOS als auch Mac OS können SSL, und die Verwendung von SSL über die enstprechenden Cocoa-Klassen ist nicht schwieriger als sich selber was im Klartext zusammenzupopeln. Moan, wir reden von mobilen Devices, da *muss* mindestens der Transportweg verschlüsselt sein.

    Die Verwendung von Kryptographie erhöht überdies das Allgemeinwissen. Was nicht schaden kann, wie man unlängst wieder sehen konnte.
  • klausel schrieb:

    gritsch schrieb:

    er muss sich nicht einen server und einen client programmieren und dann testen obs geht, sondern kann sich den server basteln und dann mal mittels terminal ein "halo" senden.
    wenn das dann klappt kann er sich immer noch einen client basteln der das "halo" sendet ;)
    So entsteht 80% jeder Software im Business-Umfeld. Und bleibt dann aber auch so. LÄUFT DOCH, DA MUSS MAN NICHTS MEHR DRAN ÄNDERN!!?^

    Das Problem ist nicht das Programm Telnet. Das Problem ist, dass die Verwendung von Klartextprotokollen leider nicht unter Strafe steht. Sowohl iOS als auch Mac OS können SSL, und die Verwendung von SSL über die enstprechenden Cocoa-Klassen ist nicht schwieriger als sich selber was im Klartext zusammenzupopeln. Moan, wir reden von mobilen Devices, da *muss* mindestens der Transportweg verschlüsselt sein.

    Die Verwendung von Kryptographie erhöht überdies das Allgemeinwissen. Was nicht schaden kann, wie man unlängst wieder sehen konnte.

    Aber ist telnet nicht die einzige Möglichkeit, Kommandos als Text abzusetzen? ;)

    Jemand sollte mal eine verschlüsselte Alternative programmieren. (Mit eigener Verschlüsselung! Ich empfehle da, XOR-A5)
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • klausel schrieb:

    Im Jahr 2010 telnet zu empfehlen, ist entweder fahrlässig oder boshaft.

    Ich sehe kein Problem mit dem Telnet Protokoll, abgesehen davon, dass es im Klartext überträgt. Wie auch viele andere Protokolle. Etwa HTTP. Dieses Forum. Lese ich auch unterwegs, mit iPhone, ohne SSL.

    Lucas de Vil schrieb:

    Aus eben diesem Grunde wird ja auch noch C++ und Objective-C verwendet, nech?

    Schwierig, dieser Vorlage zu widerstehen. Ich..kann..es..schaffen!

    klausel schrieb:

    Das Problem ist nicht das Programm Telnet. Das Problem ist, dass die Verwendung von Klartextprotokollen leider nicht unter Strafe steht. Sowohl iOS als auch Mac OS können SSL, und die Verwendung von SSL über die enstprechenden Cocoa-Klassen ist nicht schwieriger als sich selber was im Klartext zusammenzupopeln.

    Achso, na siehst Du. Aber so richtig verstehe ich nicht, was Du willst:
    1. SSL erzeugt eine deutliche CPU Last. Darum gibt es etwa auch SSL-Hardwaremodule für grosse Server. Kann sich aber nicht jeder leisten. Also, SSL kostet viel Geld und verschmutzt die Umwelt (wenn das Rechenzentrum nicht Ökostrom verwendet).
    2. SSL kostet auch ordentlich Leistung auf dem iPhone. Also kürzere Akkulaufzeit und dadurch wieder Umweltverschmutzung.
    3. SSL ist wenig sinnvoll, ohne korrekte Zertifikate. Die kann und will sich nicht jeder leisten. Oder willst Du behaupten, dass man schon durch SSL alleine plötzlich "sicher" ist? Das wäre auch entweder fahrlässig oder boshaft.
    4. Folglich ist abzuwägen, ob eine solche Verschlüsselung überhaupt notwendig ist.

    klausel schrieb:

    Moan, wir reden von mobilen Devices, da *muss* mindestens der Transportweg verschlüsselt sein.

    Das musst Du mir auch noch einmal genauer erklären. A5 ist jetzt sicherlich nicht die Krönung der Schöpfung, aber erfordert doch einiges an Aufwand (Kapital), um da durch zu kommen. IMSI-Catcher kann man sich auch für nicht ganz so wenig Geld bauen. Aber dennoch - Was für Bedrohungsszenarien siehst Du hier? Und glaubst Du, solche Angreifer lassen sich durch ein Self-signed SSL Cert irgendwie bremsen? Und warum sollte ich meinem ISP, irgendeinem ISP mehr trauen, als dem mobilen Transportweg?
    C++
  • klausel schrieb:



    Das Problem ist nicht das Programm Telnet. Das Problem ist, dass die Verwendung von Klartextprotokollen leider nicht unter Strafe steht. Sowohl iOS als auch Mac OS können SSL, und die Verwendung von SSL über die enstprechenden Cocoa-Klassen ist nicht schwieriger als sich selber was im Klartext zusammenzupopeln. Moan, wir reden von mobilen Devices, da *muss* mindestens der Transportweg verschlüsselt sein.



    Da frag ich mich was an einer Nachricht "Es geht!" verschlüsselt werden muss :)

    SCNR.

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)