Asynchronous socket networking library for Mac and iOS

Last update: Aug 2, 2022

CocoaAsyncSocket

Build Status Version Status Carthage compatible Platform license Public Domain

CocoaAsyncSocket provides easy-to-use and powerful asynchronous socket libraries for macOS, iOS, and tvOS. The classes are described below.

Installation

CocoaPods

Install using CocoaPods by adding this line to your Podfile:

use_frameworks! # Add this if you are targeting iOS 8+ or using Swift
pod 'CocoaAsyncSocket'  

Carthage

CocoaAsyncSocket is Carthage compatible. To include it add the following line to your Cartfile

github "robbiehanson/CocoaAsyncSocket" "master"

The project is currently configured to build for iOS, tvOS and Mac. After building with carthage the resultant frameworks will be stored in:

  • Carthage/Build/iOS/CocoaAsyncSocket.framework
  • Carthage/Build/tvOS/CocoaAsyncSocket.framework
  • Carthage/Build/Mac/CocoaAsyncSocket.framework

Select the correct framework(s) and drag it into your project.

Swift Package Manager

Simply add the package dependency to your Package.swift and depend on "CocoaAsyncSocket" in the necessary targets:

dependencies: [
    .package(url: "https://github.com/robbiehanson/CocoaAsyncSocket", from: "7.6.4")
]

Manual

You can also include it into your project by adding the source files directly, but you should probably be using a dependency manager to keep up to date.

Importing

Using Objective-C:

// When using Clang Modules:
@import CocoaAsyncSocket; 

// or when not:
#import "GCDAsyncSocket.h" // for TCP
#import "GCDAsyncUdpSocket.h" // for UDP

Using Swift:

import CocoaAsyncSocket

TCP

GCDAsyncSocket is a TCP/IP socket networking library built atop Grand Central Dispatch. Here are the key features available:

  • Native Objective-C, fully self-contained in one class.
    No need to muck around with sockets or streams. This class handles everything for you.

  • Full delegate support
    Errors, connections, read completions, write completions, progress, and disconnections all result in a call to your delegate method.

  • Queued non-blocking reads and writes, with optional timeouts.
    You tell it what to read or write, and it handles everything for you. Queueing, buffering, and searching for termination sequences within the stream - all handled for you automatically.

  • Automatic socket acceptance.
    Spin up a server socket, tell it to accept connections, and it will call you with new instances of itself for each connection.

  • Support for TCP streams over IPv4 and IPv6.
    Automatically connect to IPv4 or IPv6 hosts. Automatically accept incoming connections over both IPv4 and IPv6 with a single instance of this class. No more worrying about multiple sockets.

  • Support for TLS / SSL
    Secure your socket with ease using just a single method call. Available for both client and server sockets.

  • Fully GCD based and Thread-Safe
    It runs entirely within its own GCD dispatch_queue, and is completely thread-safe. Further, the delegate methods are all invoked asynchronously onto a dispatch_queue of your choosing. This means parallel operation of your socket code, and your delegate/processing code.

UDP

GCDAsyncUdpSocket is a UDP/IP socket networking library built atop Grand Central Dispatch. Here are the key features available:

  • Native Objective-C, fully self-contained in one class.
    No need to muck around with low-level sockets. This class handles everything for you.

  • Full delegate support.
    Errors, send completions, receive completions, and disconnections all result in a call to your delegate method.

  • Queued non-blocking send and receive operations, with optional timeouts.
    You tell it what to send or receive, and it handles everything for you. Queueing, buffering, waiting and checking errno - all handled for you automatically.

  • Support for IPv4 and IPv6.
    Automatically send/recv using IPv4 and/or IPv6. No more worrying about multiple sockets.

  • Fully GCD based and Thread-Safe
    It runs entirely within its own GCD dispatch_queue, and is completely thread-safe. Further, the delegate methods are all invoked asynchronously onto a dispatch_queue of your choosing. This means parallel operation of your socket code, and your delegate/processing code.


For those new(ish) to networking, it's recommended you read the wiki.
Sockets might not work exactly like you think they do...

Still got questions? Try the CocoaAsyncSocket Mailing List.


Love the project? Wanna buy me a ☕️   ? (or a 🍺    😀  ):

donation-bitcoin donation-paypal

GitHub

https://github.com/robbiehanson/CocoaAsyncSocket
Comments
  • 1. IPv6 Can't assign requested address

    As Apple says, tried to connect to IPv4 address in IPv6-only network, here are codes:

    GCDAsyncSocket *socket = [[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
    socket.IPv4PreferredOverIPv6 = NO;
    [socket connectToHost:@"xxx.xxx.xxx.xxx" onPort:xxx withTimeout:10 error:nil];
    

    Always failed with error: Error Domain=NSPOSIXErrorDomain Code=49 "Can't assign requested address" UserInfo={NSLocalizedDescription=Can't assign requested address, NSLocalizedFailureReason=Error in connect() function}

    I thought CocoaAsyncSocket will Synthesize IPv6 address from IPv4 address automatically, but I was wrong. Can somebody help me?

    Reviewed by Smeegol at 2016-05-13 04:01
  • 2. Crash on iOS 15.0 Beta5 +[GCDAsyncSocket cfstreamThread] (GCDAsyncSocket.m:7596)

    I have this crash on iOS 15.0 Beta5.The crash happened on the method +[GCDAsyncSocket cfstreamThread] line:7596. What could be the cause of the problem?

    This is the crash stack:

    Thread 32 name: GCDAsyncSocket-CFStream Thread 32 Crashed: 0 libobjc.A.dylib 0x19b483c50 objc_release + 16 1 Foundation 0x184161344 -[_NSThreadPerformInfo dealloc] + 56 2 Foundation 0x1842d08dc __NSThreadPerform + 160 3 CoreFoundation 0x1829b069c CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 28 4 CoreFoundation 0x1829c12f0 __CFRunLoopDoSource0 + 208 5 CoreFoundation 0x1828fabf8 __CFRunLoopDoSources0 + 268 6 CoreFoundation 0x182900404 __CFRunLoopRun + 820 7 CoreFoundation 0x182913fc8 CFRunLoopRunSpecific + 600 8 Foundation 0x184134104 -[NSRunLoop+ 102660 (NSRunLoop) runMode:beforeDate:] + 236 9 MyApp 0x104990290 0x1026b0000 + 36569744 10 Foundation 0x184183950 NSThread__start + 764 11 libsystem_pthread.dylib 0x1f2745a60 _pthread_start + 148 12 libsystem_pthread.dylib 0x1f2744f5c thread_start + 8

    Reviewed by xgycc at 2021-08-17 10:09
  • 3. just crash on ios 15.1.0

    Crashed: GCDAsyncSocket-CFStream EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000 0 libobjc.A.dylib lookUpImpOrForward + 76 1 libobjc.A.dylib _objc_msgSend_uncached + 68 2 Foundation -[_NSThreadPerformInfo dealloc] + 56 3 Foundation __NSThreadPerformPerform + 240 4 CoreFoundation CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 28 5 CoreFoundation __CFRunLoopDoSource0 + 208 6 CoreFoundation __CFRunLoopDoSources0 + 268 7 CoreFoundation __CFRunLoopRun + 820 8 CoreFoundation CFRunLoopRunSpecific + 600 9 Foundation -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 236 10 MeMe GCDAsyncSocket.m - Line 7686 +[GCDAsyncSocket cfstreamThread:] + 7686 11 Foundation NSThread__start + 808 12 libsystem_pthread.dylib _pthread_start + 148 13 libsystem_pthread.dylib thread_start + 8

    a lot of people crashed,and just crash on ios 15.1.0

    Reviewed by fallbort at 2021-11-02 02:25
  • 4. socketDidDisconnectWithError not getting called if socket is disconnected by other party after a write?

    socketDidDisconnectWithError not getting called if socket is disconnected by other party after a write?

    If I write something in socket and then the other party disconnects no callback function is there..

    If there is no write then I get a callback?

    Reviewed by kneeraj1762 at 2013-07-27 17:12
  • 5. kCFStreamNetworkServiceTypeVoIP is deprecated in iOS 9.0

    To whom it may concern,

    I got the following warning message when upgrading to Xcode 7.0 and the development target 9.0.

    'kCFStreamNetworkServiceTypeVoIP' is deprecated: first deprecated in iOS 9.0 - use PushKit for VoIP control purposes" in GCDAsyncSocket.m

    Please let me know if you need more detail to resolve this issue.

    Thank you for precious time on this.

    Reviewed by willSapgreen at 2015-10-11 03:22
  • 6. Added support for unix domain sockets

    Feature request #76. This is only implemented for GCDAsyncSocket.

    Xcode/DomainTest/ demonstrates the use of unix domain sockets as a server and a client.

    I tried to implement this feature with as little overall changes to the code as possible, which has yielded some additional code replication.

    Reviewed by jdiehl at 2012-10-06 16:45
  • 7. possible memory leak ios 9.0.2

    Sending messages with a GCDAsyncUdpSocket in an iOS app (SpriteKit), makes the Memory indicator in the debugging sidebar in XCode go up and never comes down ( I reached 500+ MB at one time after a lot of usage, and the app only starts with 10 MB). I did not manage to find where the leak comes from with Instruments , but by trial and error, I managed to figure out it only happen when I send a message

    My code [_clientSocket sendData:data toHost:host port:port withTimeout:-1 tag:1];

    Which goes to GDCAsyncUdpSocket.m:

    • (void)sendData:(NSData *)data toHost:(NSString *)host port:(uint16_t)port withTimeout:(NSTimeInterval)timeout tag:(long)tag

    Tested with an iphone 6 / ios 9.0.2. A thing to note, the leak does not seem to be happening on an iPhone4 / iOS 7.

    Reviewed by eemerge at 2015-12-25 00:19
  • 8. Implement Happy Eyeballs algorithm (IPv4 / IPv6 connectivity)

    Currently GCDAsyncSocket resolves hosts to addresses (DNS) automatically, but doesn't choose the right protocol (IPv4 or IPv6). Indeed, some hostnames have both A and AAAA records, and interfaces support IPv4 and IPv6, so we have choice to connect with either protocols. Though, sometimes servers listens only one of both protocols even if A and AAAA records are present. e.g. this is the case of the local PHP server (when running php -S) that listens on IPv6 only, even if localhost has both IPv4 and IPv6 host records. This causes a problem as we don't know which protocol to use ahead of time, and need to try to connect with either protocol and then try the other if the first fails. This can be done manually using IPv4Enabled, IPv6Enabled and IPv4PreferredOverIPv6, but I think this could be nicely handled by the library as it isn't a simple problem for applications.

    I don't have any deep knowledge of IP protocols nor dual-stack applications, but it seems that the Happy Eyeballs algorithm is the answer, see RFC 6555.

    (note: I need to solve that problem for my app, so I'll try to come up with a solid implementation and do a PR)

    Reviewed by mittsh at 2015-05-01 11:23
  • 9. socketDidDisconnect not to be call on iOS6

    It always be called on iOS5,but when I test it on iOS6 ,it doesn't work. I tried connect to a TCP sever using GCDAsyncSocket,when I stop sharing Internet over WIFI,I found CFReadStreamCallback and CFWriteStreamCallback not to be call.There is not any error event.

    Reviewed by momor at 2013-02-21 09:32
  • 10. Crash on iOS 14.5 -[GCDAsyncSocket openStreams] (GCDAsyncSocket.m:6998)

    Hi, Apps crashed when became foreground and want to connect with server,since iOS 14.5 released on April 27。

    Crash stack like this:

    Monitor Type: Mach Exception Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000010 Crashed Thread: 40

    Pthread id: 867350 Thread 40 Crashed: 0 libnetwork.dylib nw_endpoint_flow_copy_path + 44 1 libnetwork.dylib nw_endpoint_flow_copy_path + 40 2 libnetwork.dylib nw_endpoint_flow_connected + 320 3 libnetwork.dylib nw_flow_connected + 3668 4 libnetwork.dylib nw_socket_connect + 584 5 libnetwork.dylib nw_endpoint_flow_connect + 164 6 libnetwork.dylib nw_endpoint_flow_setup_protocols + 3272 7 libnetwork.dylib -[NWConcrete_nw_endpoint_flow startWithHandler:] + 3616 8 libnetwork.dylib nw_endpoint_handler_path_change + 10592 9 libnetwork.dylib nw_endpoint_handler_start + 1184 10 libnetwork.dylib __nw_connection_start_block_invoke + 1460 11 imeituan __innerBlockOnce_block_invoke (SCRCrashMonitor_GCD.mm:191) 12 libdispatch.dylib _dispatch_call_block_and_release + 32 13 libdispatch.dylib _dispatch_client_callout + 20 14 libdispatch.dylib _dispatch_lane_serial_drain + 620 15 libdispatch.dylib _dispatch_lane_invoke + 456 16 libdispatch.dylib _dispatch_workloop_invoke + 1680 17 libdispatch.dylib _dispatch_workloop_worker_thread + 764 18 libsystem_pthread.dylib _pthread_wqthread + 276 Enqueue thread backtrace: 0 imeituan innerBlockOnce (SCRCrashMonitor_GCD.mm:0) 1 imeituan _dispatch_async (SCRCrashMonitor_GCD.mm:0) 2 libnetwork.dylib nw_connection_start + 280 3 libnetwork.dylib tcp_connection_start + 1496 4 CFNetwork 0x0000000180b7c3bc + 168 5 CFNetwork 0x0000000180b79b80 + 2776 6 CFNetwork 0x0000000180b77918 + 1724 7 CoreFoundation _CFStreamOpen + 140 8 imeituan -[GCDAsyncSocket openStreams] (GCDAsyncSocket.m:6998) 9 imeituan __29-[GCDAsyncSocket didConnect:]_block_invoke330 (GCDAsyncSocket.m:2369) 10 imeituan __29-[GCDAsyncSocket didConnect:]_block_invoke_2 (GCDAsyncSocket.m:2396) 11 imeituan __innerBlockOnce_block_invoke (SCRCrashMonitor_GCD.mm:191) 12 libdispatch.dylib _dispatch_call_block_and_release + 32 13 libdispatch.dylib _dispatch_client_callout + 20 14 libdispatch.dylib _dispatch_lane_serial_drain + 620 15 libdispatch.dylib _dispatch_lane_invoke + 404 16 libdispatch.dylib _dispatch_workloop_worker_thread + 764 17 libsystem_pthread.dylib _pthread_wqthread + 276 18 libsystem_pthread.dylib start_wqthread + 8

    Reviewed by nihongmei at 2021-04-30 07:36
  • 11. nw_connection_copy_connected_path ERROR

    after connected,I meet this error "[] nw_connection_copy_connected_path [C1] Client called nw_connection_copy_connected_path on unconnected nw_connection" "tcp_connection_is_cellular No connected path",is anybody met this problem?

    Reviewed by ligui-iOS at 2018-11-20 02:59
  • 12. Always resumeReadSource after flushSSLBuffers in maybeDequeueRead

    Resolves an issue we found when the SSLRead(...) call in flushSSLBuffers returned errSSLWouldBlock. In this case, we would want to resumeReadSource so that the buffers can drain.

    Fixes #798

    Reviewed by gwynjudd at 2022-07-25 04:01
  • 13. Occasional failures relating to flushSSLBuffers encountering errSSLWouldBlock

    Hello,

    this issue describes a problem we encountered which was rather difficult to replicate. We see it in our app, which is rather complex, and it only happens very occasionally. I will try to describe the issue as best as I can, and I will submit a PR that seems to resolve it. I don't fully and perfectly understand the code in GCDAsyncSocket.m so I may be wrong in some of my assumptions, or my description may be inadequate, but please bear with me and i will do my best.

    Firstly, the problem seems to be caused when the SSLRead(...) call shown below returns errSSLWouldBlock. I learned that this is sometimes an expected result of this call, and you are meant to retry the call if this occurs (https://developer.apple.com/documentation/security/1394324-sslread).

    			OSStatus result = SSLRead(sslContext, buffer, (size_t)estimatedBytesAvailable, &bytesRead);
    			LogVerbose(@"%@ - read from secure socket = %u", THIS_METHOD, (unsigned)bytesRead);
    			
    			if (bytesRead > 0)
    			{
    				[preBuffer didWrite:bytesRead];
    			}
    

    The problem only seemed to occur when flushSSLBuffers was called at this place in maybeDequeueRead:

    		else if (flags & kSocketSecure)
    		{
    			[self flushSSLBuffers];
    			
    			// Edge case:
    			// 
    			// We just drained all data from the ssl buffers,
    			// and all known data from the socket (socketFDBytesAvailable).
    

    This is where I got lost, but the problem we see is that our calling code will eventually time out. I assume that it is waiting for the write to complete, and it never does so because the SSL buffer is never completely drained.

    To resolve it, we have removed the check for [preBuffer availableBytes] == 0 in maybeDequeueRead:

    			if ([preBuffer availableBytes] == 0)
    			{
    				if ([self usingCFStreamForTLS]) {
    					// Callbacks never disabled
    				}
    				else {
    					[self resumeReadSource];
    				}
    			}
    

    I will follow this up with a PR shortly so you can see what I meant.

    Reviewed by gwynjudd at 2022-07-25 03:51
  • 14. Bump tzinfo from 1.2.6 to 1.2.10

    Bumps tzinfo from 1.2.6 to 1.2.10.

    Release notes

    Sourced from tzinfo's releases.

    v1.2.10

    TZInfo v1.2.10 on RubyGems.org

    v1.2.9

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    TZInfo v1.2.9 on RubyGems.org

    v1.2.8

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    TZInfo v1.2.8 on RubyGems.org

    v1.2.7

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.

    TZInfo v1.2.7 on RubyGems.org

    Changelog

    Sourced from tzinfo's changelog.

    Version 1.2.10 - 19-Jul-2022

    Version 1.2.9 - 16-Dec-2020

    • Fixed an incorrect InvalidTimezoneIdentifier exception raised when loading a zoneinfo file that includes rules specifying an additional transition to the final defined offset (for example, Africa/Casablanca in version 2018e of the Time Zone Database). #123.

    Version 1.2.8 - 8-Nov-2020

    • Added support for handling "slim" format zoneinfo files that are produced by default by zic version 2020b and later. The POSIX-style TZ string is now used calculate DST transition times after the final defined transition in the file. The 64-bit section is now always used regardless of whether Time has support for 64-bit times. #120.
    • Rubinius is no longer supported.

    Version 1.2.7 - 2-Apr-2020

    • Fixed 'wrong number of arguments' errors when running on JRuby 9.0. #114.
    • Fixed warnings when running on Ruby 2.8. #112.
    Commits
    • 0814dcd Fix the release date.
    • fd05e2a Preparing v1.2.10.
    • b98c32e Merge branch 'fix-directory-traversal-1.2' into 1.2
    • ac3ee68 Remove unnecessary escaping of + within regex character classes.
    • 9d49bf9 Fix relative path loading tests.
    • 394c381 Remove private_constant for consistency and compatibility.
    • 5e9f990 Exclude Arch Linux's SECURITY file from the time zone index.
    • 17fc9e1 Workaround for 'Permission denied - NUL' errors with JRuby on Windows.
    • 6bd7a51 Update copyright years.
    • 9905ca9 Fix directory traversal in Timezone.get when using Ruby data source
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    Reviewed by dependabot[bot] at 2022-07-22 05:21
  • 15. Is there any new update plan? SSLmethod is not supported.

    'SSLRead' is deprecated: first deprecated in macCatalyst 13.0 - No longer supported. Use Network.framework. 'SSLGetBufferedReadSize' is deprecated: first deprecated in macCatalyst 13.0 - No longer supported. Use Network.framework.

    Reviewed by moyun-yinyun at 2022-07-07 00:37
  • 16. GCDAsyncSocket EXC_GUARD 0x08fd4dbfade2dead

    Environment: iOS 14, 15 Version: 7.6.3

    We are getting reports from Crashlytics with the heading: GCDAsyncSocket EXC_GUARD 0x08fd4dbfade2dead

    Stacktrace:

    Crashed: GCDAsyncSocket
    0  libsystem_kernel.dylib         0x27c4 close + 8
    1  libdispatch.dylib              0x1e6c _dispatch_call_block_and_release + 32
    2  libdispatch.dylib              0x3a30 _dispatch_client_callout + 20
    3  libdispatch.dylib              0x6eec _dispatch_continuation_pop + 500
    4  libdispatch.dylib              0x1ab48 _dispatch_source_cancel_callout + 204
    5  libdispatch.dylib              0x19fa0 _dispatch_source_invoke + 1184
    6  libdispatch.dylib              0xb000 _dispatch_lane_serial_drain + 376
    7  libdispatch.dylib              0xbc80 _dispatch_lane_invoke + 392
    8  libdispatch.dylib              0x16500 _dispatch_workloop_worker_thread + 648
    9  libsystem_pthread.dylib        0x10bc _pthread_wqthread + 288
    10 libsystem_pthread.dylib        0xe5c start_wqthread + 8
    

    It seems to happen only intermittently, and we didn't have this issue before the update where we changed the code that disconnects and reconnects at a certain interval repeatedly. We haven't updated CocoaAsyncSocket, so I'm thinking there might be some undesirable side effects that are taking place in the new disconnect/reconnect sequence.

    EXC_GUARD 0x08fd4dbfade2dead seems to be related to using a released file descriptor according to some pages (curl Github page, Apple dev forum).

    Since we're not hearing from customers about this issue, I'm guessing it might be happening while the app is in the background/suspended state, or when it's closing.

    If there are any cautions to take when reconnecting, or any method call sequence that could trigger the issue, please let me know.

    Thank you!

    Reviewed by funct7 at 2022-07-01 01:01
  • 17. nw_connection_copy_connected_path ERROR

    Getting this same issue when run the app in iPhone device. But works very well in Simulator. Any clue about this issue. My device has support simcard and wifi. While i am running the app, simcard is not available in the iphone. What could be the issue. I am getting this issue frequently .

    LISTEN CALLED Command->Connecting to socket server... port 2000 Data->Connecting to socket server... port 3000 Data->Connected to host: 10.10.10.1 and port 3000 Setting default baud... Command->Transmit: set uart.baud 0 9600

    Command->Transmit: uart_update 0

    Command->Transmit: get uart.baud 0

    2022-06-07 13:54:24.160400+0530 AppPoC[615:37495] [connection] nw_connection_copy_connected_path [C1] Client called nw_connection_copy_connected_path on unconnected nw_connection 2022-06-07 13:54:24.161216+0530 AppPoC[615:37495] [] tcp_connection_is_cellular No connected path Command->Connected to host: 10.10.10.1 and port 2000 2022-06-07 13:54:25.759413+0530 AppPoC[615:37495] [connection] nw_connection_copy_connected_path [C2] Client called nw_connection_copy_connected_path on unconnected nw_connection 2022-06-07 13:54:25.759610+0530 AppPoC[615:37495] [] tcp_connection_is_cellular No connected path 2022-06-07 13:54:30.939380+0530 AppPoC[615:37475] [connection] nw_socket_handle_socket_event [C2:1] Socket SO_ERROR [54: Connection reset by peer] Command->Socket disconnect with error: Optional(Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo={NSLocalizedDescription=Socket closed by remote peer}) Command->Connecting to socket server... port 2000 Command->Connected to host: 10.10.10.1 and port 2000 2022-06-07 13:54:30.954366+0530 AppPoC[615:37495] [connection] nw_connection_copy_connected_path [C3] Client called nw_connection_copy_connected_path on unconnected nw_connection 2022-06-07 13:54:30.954626+0530 AppPoC[615:37495] [] tcp_connection_is_cellular No connected path

    Command->Socket disconnect with error: Optional(Error Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" UserInfo={NSLocalizedDescription=Socket closed by remote peer}) Command->Connecting to socket server... port 2000 Command->Connected to host: 10.10.10.1 and port 2000 2022-06-07 13:59:31.063580+0530 AppPoC[615:37495] [connection] nw_connection_copy_connected_path [C4] Client called nw_connection_copy_connected_path on unconnected nw_connection 2022-06-07 13:59:31.063830+0530 AppPoC[615:37495] [] tcp_connection_is_cellular No connected path

    Reviewed by rameshkec85 at 2022-06-07 08:34
Lightweight Networking and Parsing framework made for iOS, Mac, WatchOS and tvOS.
Lightweight Networking and Parsing framework made for iOS, Mac, WatchOS and tvOS.

NetworkKit A lightweight iOS, Mac and Watch OS framework that makes networking and parsing super simple. Uses the open-sourced JSONHelper with functio

May 24, 2022
Socket.io iOS and OSX Client compatible with v1.0 and later
Socket.io iOS and OSX Client compatible with v1.0 and later

SocketIO-Kit ⚠️ This project is no longer maintained. Please use the official framework Socket.IO-Client-Swift. SocketIO-Kit is a Socket.io iOS client

Mar 9, 2022
Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux.

BlueSocket Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux. Prerequisites Swift Swift Open Source swift-5.1

Aug 3, 2022
🔌 Non-blocking TCP socket layer, with event-driven server and client.
🔌  Non-blocking TCP socket layer, with event-driven server and client.

Original authors Honza Dvorsky - http://honzadvorsky.com, @czechboy0 Matthias Kreileder - @matthiaskr1 At the request of the original authors, we ask

Aug 6, 2022
DispatchSource based socket framework written in pure Swift

SwiftDSSocket Overview SwiftDSSocket is a purely swift based asynchronous socket framework built atop DispatchSource. Function signatures are pretty m

Apr 24, 2022
MVVM project to show AQI of cities via web socket

Air Quality Monitoring Application Swift project with JSON parsing using codable About the application The app consists of live realtime data from the

Nov 27, 2021
This app is using web-socket for realtime updation of aqi for dedicated inidan cities.

CityWiseAQI This app is using web-socket for realtime updation of aqi for dedicated inidan cities. We're following MVVM architecture in this app. This

Feb 7, 2022
Swift async/await based socket

Socket Swift async/await based socket library Introduction This library exposes an idiomatic Swift API for interacting with POSIX sockets via an async

Aug 2, 2022
QwikHttp is a robust, yet lightweight and simple to use HTTP networking library for iOS, tvOS and watchOS

QwikHttp is a robust, yet lightweight and simple to use HTTP networking library. It allows you to customize every aspect of your http requests within a single line of code, using a Builder style syntax to keep your code super clean.

Mar 20, 2022
A networking library for iOS, macOS, watchOS and tvOS

Thunder Request Thunder Request is a Framework used to simplify making http and https web requests. Installation Setting up your app to use ThunderBas

Oct 14, 2021
A modern download manager based on NSURLSession to deal with asynchronous downloading, management and persistence of multiple files.
A modern download manager based on NSURLSession to deal with asynchronous downloading, management and persistence of multiple files.

TWRDownloadManager TWRDownloadManager A modern download manager for iOS (Objective C) based on NSURLSession to deal with asynchronous downloading, man

Apr 11, 2022
Swish is a networking library that is particularly meant for requesting and decoding JSON via Decodable
Swish is a networking library that is particularly meant for requesting and decoding JSON via Decodable

Swish Nothing but net(working). Swish is a networking library that is particularly meant for requesting and decoding JSON via Decodable. It is protoco

Jun 29, 2022
foursquare iOS networking library

FSNetworking foursquare's iOS networking library FSN is a small library for HTTP networking on iOS. It comprises a single class, FSNConnection, and se

Apr 6, 2022
🏇 A Swift HTTP / HTTPS networking library just incidentally execute on machines
🏇 A Swift HTTP / HTTPS networking library just incidentally execute on machines

Thus, programs must be written for people to read, and only incidentally for machines to execute. Harold Abelson, "Structure and Interpretation of Com

Jun 24, 2022
Malibu is a networking library built on promises
Malibu is a networking library built on promises

Description Palm trees, coral reefs and breaking waves. Welcome to the surf club Malibu, a networking library built on promises. It's more than just a

Jul 27, 2022
RSNetworking is a networking library written entirly for the Swift programming language.

RSNetworking is a networking library written entirly for the Swift programming language.

Feb 25, 2018
ServiceData is an HTTP networking library written in Swift which can download different types of data.

ServiceData Package Description : ServiceData is an HTTP networking library written in Swift which can download different types of data. Features List

Nov 11, 2021
A networking library for Swift
A networking library for Swift

Nikka Nikka is a super simple Swift HTTP networking library that comes with many extensions to make it modular and really powerful. Installation Usage

Jul 25, 2022
Malibu is a networking library built on promises
Malibu is a networking library built on promises

Description Palm trees, coral reefs and breaking waves. Welcome to the surf club Malibu, a networking library built on promises. It's more than just a

Jan 29, 2022