你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS AsyncSocket

IOS AsyncSocket

編輯:IOS開發綜合
    先分享下       NSLog(@"model -- %@",[UIDevice currentDevice].model);//判斷是iphone或是ipad等       NSLog(@"version -- %@",[UIDevice currentDevice].systemVersion);//系統版本         下面的就是把頭文件裡的東西搬了出來   - (id)init; - (id)initWithDelegate:(id)delegate;       /**  * Tells the socket to begin listening and accepting connections on the given port.  * When a connection comes in, the AsyncSocket instance will call the various delegate methods (see above).  * The socket will listen on all available interfaces (e.g. wifi, ethernet, etc) **/ - (BOOL)acceptOnPort:(UInt16)port error:(NSError **)errPtr;   在指定的端口偵聽       /**  * Connects to the given host and port.  * The host may be a domain name (e.g. "deusty.com") or an IP address string (e.g. "192.168.0.2") **/ - (BOOL)connectToHost:(NSString *)hostname onPort:(UInt16)port error:(NSError **)errPtr;   向指定的host和端口連接,host格式可以是www.baidu.com 或者 192.168.100.100,它的timeout為-1.     /**  * This method is the same as connectToHost:onPort:error: with an additional timeout option.  * To not time out use a negative time interval, or simply use the connectToHost:onPort:error: method. **/ - (BOOL)connectToHost:(NSString *)hostname                onPort:(UInt16)port           withTimeout:(NSTimeInterval)timeout                 error:(NSError **)errPtr;   和connectToHost:onPort:error: 差不多,就是加了個連接時間限制       /**  * Connects to the given address, specified as a sockaddr structure wrapped in a NSData object.  * For example, a NSData object returned from NSNetservice's addresses method.  *   * If you have an existing struct sockaddr you can convert it to a NSData object like so:  * struct sockaddr sa  -> NSData *dsa = [NSData dataWithBytes:&remoteAddr length:remoteAddr.sa_len];  * struct sockaddr *sa -> NSData *dsa = [NSData dataWithBytes:remoteAddr length:remoteAddr->sa_len]; **/ - (BOOL)connectToAddress:(NSData *)remoteAddr error:(NSError **)errPtr;   這個把sockaddr封裝到data中,sockaddr中有地址和端口,一直沒有用過這個       /**  * This method is the same as connectToAddress:error: with an additional timeout option.  * To not time out use a negative time interval, or simply use the connectToAddress:error: method. **/ - (BOOL)connectToAddress:(NSData *)remoteAddr withTimeout:(NSTimeInterval)timeout error:(NSError **)errPtr;       /**  * Disconnects immediately. Any pending reads or writes are dropped.  * If the socket is not already disconnected, the onSocketDidDisconnect delegate method  * will be called immediately, before this method returns.  *   * Please note the recommended way of releasing an AsyncSocket instance (e.g. in a dealloc method)  * [asyncSocket setDelegate:nil];  * [asyncSocket disconnect];  * [asyncSocket release]; **/ - (void)disconnect;   立即斷開連接         /**  * Disconnects after all pending reads have completed.  * After calling this, the read and write methods will do nothing.  * The socket will disconnect even if there are still pending writes. **/ - (void)disconnectAfterReading;           /**  * Disconnects after all pending writes have completed.  * After calling this, the read and write methods will do nothing.  * The socket will disconnect even if there are still pending reads. **/ - (void)disconnectAfterWriting;           /**  * Disconnects after all pending reads and writes have completed.  * After calling this, the read and write methods will do nothing. **/ - (void)disconnectAfterReadingAndWriting;       /**  * Returns the local or remote host and port to which this socket is connected, or nil and 0 if not connected.  * The host will be an IP address. **/ - (NSString *)connectedHost; - (UInt16)connectedPort;   - (NSString *)localHost; - (UInt16)localPort;           /**  * Returns the local or remote address to which this socket is connected,  * specified as a sockaddr structure wrapped in a NSData object.  *   * See also the connectedHost, connectedPort, localHost and localPort methods. **/ - (NSData *)connectedAddress; - (NSData *)localAddress;       /////////////////////  delegate////////////////////           /**  * In the event of an error, the socket is closed.  * You may call "unreadData" during this call-back to get the last bit of data off the socket.  * When connecting, this delegate method may be called  * before"onSocket:didAcceptNewSocket:" or "onSocket:didConnectToHost:". **/ - (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err;           /**  * Called when a socket disconnects with or without error.  If you want to release a socket after it disconnects,  * do so here. It is not safe to do that during "onSocket:willDisconnectWithError:".  *   * If you call the disconnect method, and the socket wasn't already disconnected,  * this delegate method will be called before the disconnect method returns. **/ - (void)onSocketDidDisconnect:(AsyncSocket *)sock;           /**  * Called when a socket accepts a connection.  Another socket is spawned to handle it. The new socket will have  * the same delegate and will call "onSocket:didConnectToHost:port:". **/ - (void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket;           /**  * Called when a new socket is spawned to handle a connection.  This method should return the run-loop of the  * thread on which the new socket and its delegate should operate. If omitted, [NSRunLoop currentRunLoop] is used. **/ - (NSRunLoop *)onSocket:(AsyncSocket *)sock wantsRunLoopForNewSocket:(AsyncSocket *)newSocket;           /**  * Called when a socket is about to connect. This method should return YES to continue, or NO to abort.  * If aborted, will result in AsyncSocketCanceledError.  *   * If the connectToHost:onPort:error: method was called, the delegate will be able to access and configure the  * CFReadStream and CFWriteStream as desired prior to connection.  *  * If the connectToAddress:error: method was called, the delegate will be able to access and configure the  * CFSocket and CFSocketNativeHandle (BSD socket) as desired prior to connection. You will be able to access and  * configure the CFReadStream and CFWriteStream in the onSocket:didConnectToHost:port: method. **/ - (BOOL)onSocketWillConnect:(AsyncSocket *)sock;           /**  * Called when a socket connects and is ready for reading and writing.  * The host parameter will be an IP address, not a DNS name. **/ - (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port;           /**  * Called when a socket has completed reading the requested data into memory.  * Not called if there is an error. **/ - (void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag;           /**  * Called when a socket has read in data, but has not yet completed the read.  * This would occur if using readToData: or readToLength: methods.  * It may be used to for things such as updating progress bars. **/ - (void)onSocket:(AsyncSocket *)sock didReadPartialDataOfLength:(CFIndex)partialLength tag:(long)tag;           /**  * Called when a socket has completed writing the requested data. Not called if there is an error. **/ - (void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag;       /**  * Called when a socket has written some data, but has not yet completed the entire write.  * It may be used to for things such as updating progress bars. **/ - (void)onSocket:(AsyncSocket *)sock didWritePartialDataOfLength:(CFIndex)partialLength tag:(long)tag;           /**  * Called if a read operation has reached its timeout without completing.  * This method allows you to optionally extend the timeout.  * If you return a positive time interval (> 0) the read's timeout will be extended by the given amount.  * If you don't implement this method, or return a non-positive time interval (<= 0) the read will timeout as usual.  *   * The elapsed parameter is the sum of the original timeout, plus any additions previously added via this method.  * The length parameter is the number of bytes that have been read so far for the read operation.  *   * Note that this method may be called multiple times for a single read if you return positive numbers. **/ - (NSTimeInterval)onSocket:(AsyncSocket *)sock   shouldTimeoutReadWithTag:(long)tag                    elapsed:(NSTimeInterval)elapsed                  bytesDone:(CFIndex)length;           /**  * Called if a write operation has reached its timeout without completing.  * This method allows you to optionally extend the timeout.  * If you return a positive time interval (> 0) the write's timeout will be extended by the given amount.  * If you don't implement this method, or return a non-positive time interval (<= 0) the write will timeout as usual.  *   * The elapsed parameter is the sum of the original timeout, plus any additions previously added via this method.  * The length parameter is the number of bytes that have been written so far for the write operation.  *   * Note that this method may be called multiple times for a single write if you return positive numbers. **/ - (NSTimeInterval)onSocket:(AsyncSocket *)sock  shouldTimeoutWriteWithTag:(long)tag                    elapsed:(NSTimeInterval)elapsed                  bytesDone:(CFIndex)length;           /**  * Called after the socket has successfully completed SSL/TLS negotiation.  * This method is not called unless you use the provided startTLS method.  *   * If a SSL/TLS negotiation fails (invalid certificate, etc) then the socket will immediately close,  * and the onSocket:willDisconnectWithError: delegate method will be called with the specific SSL error code. **/ - (void)onSocketDidSecure:(AsyncSocket *)sock;     //////////////////// 例子/////////////////     初始化       socket=[[AsyncSocket alloc]initWithDelegate:self];     [socket acceptOnPort:3000 error:nil];     connectedSockets=[[NSMutableArray alloc]initWithCapacity:1];   代理   -(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket {     [connectedSockets addObject:newSocket];      } -(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port {    // NSLog(@"peer host -> %@",[sock connectedAddress]);     NSString *welcomeMsg = @"hello message";     NSData *welcomeData = [welcomeMsg dataUsingEncoding:NSUTF8StringEncoding];     [sock writeData:welcomeData withTimeout:-1 tag:1000];     [sock readDataWithTimeout:1000 tag:2000]; } -(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {     NSLog(@"read data");     NSLog(@" string ->> %@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding] ); }   -(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag {     NSLog(@"write data"); }
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved