├── BonjourIOS
├── BonjourIOS
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ ├── CAppDelegate.h
│ ├── main.m
│ ├── BonjourIOS-Prefix.pch
│ ├── Images.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ └── LaunchImage.launchimage
│ │ │ └── Contents.json
│ ├── CHostControllerViewController.h
│ ├── BonjourIOS-Info.plist
│ ├── CAppDelegate.m
│ ├── CHostControllerViewController.m
│ └── Base.lproj
│ │ └── Main.storyboard
├── BonjourIOSTests
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ ├── BonjourIOSTests-Info.plist
│ └── BonjourIOSTests.m
└── BonjourIOS.xcodeproj
│ ├── project.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcuserdata
│ │ ├── Boobalan.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
│ │ └── mboobalan.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
│ ├── xcuserdata
│ ├── Boobalan.xcuserdatad
│ │ ├── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── BonjourIOS.xcscheme
│ │ └── xcdebugger
│ │ │ └── Breakpoints_v2.xcbkptlist
│ └── mboobalan.xcuserdatad
│ │ └── xcschemes
│ │ ├── xcschememanagement.plist
│ │ └── BonjourIOS.xcscheme
│ └── project.pbxproj
├── BonjourMac
├── BonjourMac
│ ├── en.lproj
│ │ ├── InfoPlist.strings
│ │ └── Credits.rtf
│ ├── main.m
│ ├── BonjourMac-Prefix.pch
│ ├── CAppDelegate.h
│ ├── CAppDelegate.m
│ ├── Images.xcassets
│ │ └── AppIcon.appiconset
│ │ │ └── Contents.json
│ ├── BonjourMac-Info.plist
│ └── Base.lproj
│ │ └── MainMenu.xib
├── BonjourMacTests
│ ├── en.lproj
│ │ └── InfoPlist.strings
│ ├── BonjourMacTests-Info.plist
│ └── BonjourMacTests.m
├── BonjourMac.xcodeproj
│ ├── xcuserdata
│ │ ├── mboobalan.xcuserdatad
│ │ │ ├── xcdebugger
│ │ │ │ └── Breakpoints_v2.xcbkptlist
│ │ │ └── xcschemes
│ │ │ │ ├── xcschememanagement.plist
│ │ │ │ └── BonjourMac.xcscheme
│ │ └── Boobalan.xcuserdatad
│ │ │ ├── xcschemes
│ │ │ ├── xcschememanagement.plist
│ │ │ └── BonjourMac.xcscheme
│ │ │ └── xcdebugger
│ │ │ └── Breakpoints_v2.xcbkptlist
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ ├── Boobalan.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ │ └── mboobalan.xcuserdatad
│ │ │ ├── UserInterfaceState.xcuserstate
│ │ │ └── WorkspaceSettings.xcsettings
│ └── project.pbxproj
├── CHomeViewController.h
├── CHomeViewController.m
└── CHomeViewController.xib
└── README.md
/BonjourIOS/BonjourIOS/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOSTests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMacTests/en.lproj/InfoPlist.strings:
--------------------------------------------------------------------------------
1 | /* Localized versions of Info.plist keys */
2 |
3 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/xcuserdata/mboobalan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/project.xcworkspace/xcuserdata/Boobalan.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/boobalaninfo/Bonjour-iOS-MAC-Apps/HEAD/BonjourIOS/BonjourIOS.xcodeproj/project.xcworkspace/xcuserdata/Boobalan.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/project.xcworkspace/xcuserdata/Boobalan.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/boobalaninfo/Bonjour-iOS-MAC-Apps/HEAD/BonjourMac/BonjourMac.xcodeproj/project.xcworkspace/xcuserdata/Boobalan.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/project.xcworkspace/xcuserdata/mboobalan.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/boobalaninfo/Bonjour-iOS-MAC-Apps/HEAD/BonjourIOS/BonjourIOS.xcodeproj/project.xcworkspace/xcuserdata/mboobalan.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/project.xcworkspace/xcuserdata/mboobalan.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/boobalaninfo/Bonjour-iOS-MAC-Apps/HEAD/BonjourMac/BonjourMac.xcodeproj/project.xcworkspace/xcuserdata/mboobalan.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // BonjourMac
4 | //
5 | // Created by Boobalan Munusamy on 5/2/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[])
12 | {
13 | return NSApplicationMain(argc, argv);
14 | }
15 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/CAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // CAppDelegate.h
3 | // BonjourIOS
4 | //
5 | // Created by Boobalan Munusamy on 5/6/14.
6 | // Copyright (c) 2014 greateindialcub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CAppDelegate : UIResponder
12 |
13 | @property (strong, nonatomic) UIWindow *window;
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/BonjourMac-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #ifdef __OBJC__
8 | #import
9 | #endif
10 | #ifdef DEBUG
11 |
12 | #define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
13 |
14 | #else
15 |
16 | #define DLog(...)
17 |
18 | #endif
19 |
20 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // BonjourIOS
4 | //
5 | // Created by Boobalan Munusamy on 5/6/14.
6 | // Copyright (c) 2014 greateindialcub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | #import "CAppDelegate.h"
12 |
13 | int main(int argc, char * argv[])
14 | {
15 | @autoreleasepool {
16 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([CAppDelegate class]));
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/BonjourMac/CHomeViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CHomeViewController.h
3 | // BonjourMac
4 | //
5 | // Created by Boobalan Munusamy on 5/2/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "GCDAsyncSocket.h"
11 |
12 | @interface CHomeViewController : NSViewController
13 | @property(strong) NSMutableArray* arrDevices;
14 | @end
15 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/project.xcworkspace/xcuserdata/mboobalan.xcuserdatad/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
6 |
7 | SnapshotAutomaticallyBeforeSignificantChanges
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/BonjourIOS-Prefix.pch:
--------------------------------------------------------------------------------
1 | //
2 | // Prefix header
3 | //
4 | // The contents of this file are implicitly included at the beginning of every source file.
5 | //
6 |
7 | #import
8 |
9 | #ifndef __IPHONE_5_0
10 | #warning "This project uses features only available in iOS SDK 5.0 and later."
11 | #endif
12 |
13 | #ifdef __OBJC__
14 | #import
15 | #import
16 | #import "GCDAsyncSocket.h"
17 | #endif
18 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/CAppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // CAppDelegate.h
3 | // BonjourMac
4 | //
5 | // Created by Boobalan Munusamy on 5/2/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "CHomeViewController.h"
11 | @interface CAppDelegate : NSObject
12 |
13 | @property (assign) IBOutlet NSWindow *window;
14 | @property (nonatomic,strong) IBOutlet CHomeViewController *homeController;
15 | @end
16 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "size" : "29x29",
6 | "scale" : "2x"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "size" : "40x40",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "size" : "60x60",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Bonjour-iOS-MAC-Apps
2 | ======================
3 |
4 | This is sample iOS and iMac application, these application exchange the data using Bonjour protocal.
5 |
6 | 1. Download both application
7 | 2. BonjourIOS folder has iPhone application
8 | 3. BonjourMac folder has iMAC application
9 | 4. Start both application
10 | 5. iPhone broadcast the services and iMac listen for the services
11 | 6. Once iMac show the device in the list, just do click
12 | 7. Then it will resolve and establish the connection between them
13 | 8. Send/Receive the messages vice versa from both the devices
14 |
15 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/Images.xcassets/LaunchImage.launchimage/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "orientation" : "portrait",
5 | "idiom" : "iphone",
6 | "extent" : "full-screen",
7 | "minimum-system-version" : "7.0",
8 | "scale" : "2x"
9 | },
10 | {
11 | "orientation" : "portrait",
12 | "idiom" : "iphone",
13 | "subtype" : "retina4",
14 | "extent" : "full-screen",
15 | "minimum-system-version" : "7.0",
16 | "scale" : "2x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/en.lproj/Credits.rtf:
--------------------------------------------------------------------------------
1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
2 | {\colortbl;\red255\green255\blue255;}
3 | \paperw9840\paperh8400
4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
5 |
6 | \f0\b\fs24 \cf0 Engineering:
7 | \b0 \
8 | Some people\
9 | \
10 |
11 | \b Human Interface Design:
12 | \b0 \
13 | Some other people\
14 | \
15 |
16 | \b Testing:
17 | \b0 \
18 | Hopefully not nobody\
19 | \
20 |
21 | \b Documentation:
22 | \b0 \
23 | Whoever\
24 | \
25 |
26 | \b With special thanks to:
27 | \b0 \
28 | Mom\
29 | }
30 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/CHostControllerViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // CHostControllerViewController.h
3 | // ProBonjour
4 | //
5 | // Created by Boobalan Munusamy on 4/30/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface CHostControllerViewController : UIViewController
12 |
13 | @property (strong, nonatomic) NSNetService *service;
14 | @property (strong, nonatomic) GCDAsyncSocket *socket;
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/xcuserdata/Boobalan.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BonjourIOS.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CC2D33E91919013D009E58DA
16 |
17 | primary
18 |
19 |
20 | CC2D340A1919013D009E58DA
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/xcuserdata/mboobalan.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BonjourIOS.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CC2D33E91919013D009E58DA
16 |
17 | primary
18 |
19 |
20 | CC2D340A1919013D009E58DA
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/xcuserdata/Boobalan.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BonjourMac.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CC2996B11913A7150039CE21
16 |
17 | primary
18 |
19 |
20 | CC2996D21913A7150039CE21
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/xcuserdata/mboobalan.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BonjourMac.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | CC2996B11913A7150039CE21
16 |
17 | primary
18 |
19 |
20 | CC2996D21913A7150039CE21
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOSTests/BonjourIOSTests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | com.greateindiaclub.${PRODUCT_NAME:rfc1034identifier}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMacTests/BonjourMacTests-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | com.greateindiaclub.${PRODUCT_NAME:rfc1034identifier}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 1.0
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 |
22 |
23 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOSTests/BonjourIOSTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // BonjourIOSTests.m
3 | // BonjourIOSTests
4 | //
5 | // Created by Boobalan Munusamy on 5/6/14.
6 | // Copyright (c) 2014 greateindialcub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BonjourIOSTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation BonjourIOSTests
16 |
17 | - (void)setUp
18 | {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown
24 | {
25 | // Put teardown code here. This method is called after the invocation of each test method in the class.
26 | [super tearDown];
27 | }
28 |
29 | - (void)testExample
30 | {
31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMacTests/BonjourMacTests.m:
--------------------------------------------------------------------------------
1 | //
2 | // BonjourMacTests.m
3 | // BonjourMacTests
4 | //
5 | // Created by Boobalan Munusamy on 5/2/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface BonjourMacTests : XCTestCase
12 |
13 | @end
14 |
15 | @implementation BonjourMacTests
16 |
17 | - (void)setUp
18 | {
19 | [super setUp];
20 | // Put setup code here. This method is called before the invocation of each test method in the class.
21 | }
22 |
23 | - (void)tearDown
24 | {
25 | // Put teardown code here. This method is called after the invocation of each test method in the class.
26 | [super tearDown];
27 | }
28 |
29 | - (void)testExample
30 | {
31 | XCTFail(@"No implementation for \"%s\"", __PRETTY_FUNCTION__);
32 | }
33 |
34 | @end
35 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/CAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // CAppDelegate.m
3 | // BonjourMac
4 | //
5 | // Created by Boobalan Munusamy on 5/2/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import "CAppDelegate.h"
10 | #import "CHomeViewController.h"
11 |
12 | @implementation CAppDelegate
13 |
14 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
15 | {
16 | // Insert code here to initialize your application
17 | self.homeController = [[CHomeViewController alloc]initWithNibName:@"CHomeViewController" bundle:nil];
18 |
19 | NSMutableArray* arrDevice=[[NSMutableArray alloc]init];
20 | //[arrDevice addObject:coDevice];
21 |
22 |
23 | self.homeController.arrDevices=arrDevice;
24 | [self.window.contentView addSubview:self.homeController.view];
25 | self.homeController.view.frame = ((NSView*)self.window.contentView).bounds;
26 | }
27 |
28 | @end
29 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/xcuserdata/Boobalan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/xcuserdata/Boobalan.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "mac",
5 | "size" : "16x16",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "mac",
10 | "size" : "16x16",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "mac",
15 | "size" : "32x32",
16 | "scale" : "1x"
17 | },
18 | {
19 | "idiom" : "mac",
20 | "size" : "32x32",
21 | "scale" : "2x"
22 | },
23 | {
24 | "idiom" : "mac",
25 | "size" : "128x128",
26 | "scale" : "1x"
27 | },
28 | {
29 | "idiom" : "mac",
30 | "size" : "128x128",
31 | "scale" : "2x"
32 | },
33 | {
34 | "idiom" : "mac",
35 | "size" : "256x256",
36 | "scale" : "1x"
37 | },
38 | {
39 | "idiom" : "mac",
40 | "size" : "256x256",
41 | "scale" : "2x"
42 | },
43 | {
44 | "idiom" : "mac",
45 | "size" : "512x512",
46 | "scale" : "1x"
47 | },
48 | {
49 | "idiom" : "mac",
50 | "size" : "512x512",
51 | "scale" : "2x"
52 | }
53 | ],
54 | "info" : {
55 | "version" : 1,
56 | "author" : "xcode"
57 | }
58 | }
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/BonjourMac-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | com.greateindiaclub.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1
25 | LSMinimumSystemVersion
26 | ${MACOSX_DEPLOYMENT_TARGET}
27 | NSHumanReadableCopyright
28 | Copyright © 2014 greateindiaclub. All rights reserved.
29 | NSMainNibFile
30 | MainMenu
31 | NSPrincipalClass
32 | NSApplication
33 |
34 |
35 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/BonjourIOS-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | ${PRODUCT_NAME}
9 | CFBundleExecutable
10 | ${EXECUTABLE_NAME}
11 | CFBundleIdentifier
12 | com.greateindiaclub.${PRODUCT_NAME:rfc1034identifier}
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ${PRODUCT_NAME}
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.0
25 | LSRequiresIPhoneOS
26 |
27 | UIMainStoryboardFile
28 | Main
29 | UIRequiredDeviceCapabilities
30 |
31 | armv7
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeLeft
37 | UIInterfaceOrientationLandscapeRight
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/CAppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // CAppDelegate.m
3 | // BonjourIOS
4 | //
5 | // Created by Boobalan Munusamy on 5/6/14.
6 | // Copyright (c) 2014 greateindialcub. All rights reserved.
7 | //
8 |
9 | #import "CAppDelegate.h"
10 |
11 | @implementation CAppDelegate
12 |
13 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 | {
15 | // Override point for customization after application launch.
16 | return YES;
17 | }
18 |
19 | - (void)applicationWillResignActive:(UIApplication *)application
20 | {
21 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
22 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
23 | }
24 |
25 | - (void)applicationDidEnterBackground:(UIApplication *)application
26 | {
27 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
28 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
29 | }
30 |
31 | - (void)applicationWillEnterForeground:(UIApplication *)application
32 | {
33 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
34 | }
35 |
36 | - (void)applicationDidBecomeActive:(UIApplication *)application
37 | {
38 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
39 | }
40 |
41 | - (void)applicationWillTerminate:(UIApplication *)application
42 | {
43 | // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/xcuserdata/mboobalan.xcuserdatad/xcschemes/BonjourIOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
61 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
79 |
80 |
86 |
87 |
88 |
89 |
91 |
92 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/xcuserdata/mboobalan.xcuserdatad/xcschemes/BonjourMac.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
61 |
62 |
68 |
69 |
70 |
71 |
72 |
73 |
79 |
80 |
86 |
87 |
88 |
89 |
91 |
92 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/xcuserdata/Boobalan.xcuserdatad/xcschemes/BonjourIOS.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
85 |
91 |
92 |
93 |
94 |
96 |
97 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/xcuserdata/Boobalan.xcuserdatad/xcschemes/BonjourMac.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
33 |
39 |
40 |
41 |
42 |
43 |
49 |
50 |
51 |
52 |
53 |
54 |
64 |
66 |
72 |
73 |
74 |
75 |
76 |
77 |
83 |
85 |
91 |
92 |
93 |
94 |
96 |
97 |
100 |
101 |
102 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/CHostControllerViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CHostControllerViewController.m
3 | // ProBonjour
4 | //
5 | // Created by Boobalan Munusamy on 4/30/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import "CHostControllerViewController.h"
10 |
11 | #define SERVICE_NAME @"_probonjore._tcp."
12 |
13 | #define ACK_SERVICE_NAME @"_ack._tcp."
14 |
15 | @interface CHostControllerViewController (){
16 | NSMutableData* dataBuffer;
17 | }
18 | @property (weak, nonatomic) IBOutlet UILabel *lblReceivedInfo;
19 |
20 | @property (weak, nonatomic) IBOutlet UITextField *txtInfo;
21 | @property (weak, nonatomic) IBOutlet UILabel *lblConnect;
22 |
23 | @property (weak, nonatomic) IBOutlet UIButton *btnSend;
24 | @property (weak, nonatomic) IBOutlet UILabel *lblNotSubscribe;
25 |
26 | @property(nonatomic, strong) NSMutableArray* arrServices;
27 | @property (weak, nonatomic) IBOutlet UITableView *tblview;
28 |
29 |
30 | @property(nonatomic,strong) NSNetServiceBrowser* coServiceBrowser;
31 | @property(nonatomic,strong) NSMutableDictionary* dictSockets;
32 |
33 | @property(nonatomic,assign) int selectedIndex;
34 | @end
35 |
36 | @implementation CHostControllerViewController
37 |
38 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
39 | {
40 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
41 | if (self) {
42 | // Custom initialization
43 | }
44 | return self;
45 | }
46 | - (IBAction)btnBackButton:(id)sender {
47 | [self.service stop];
48 | self.socket=nil;
49 | self.service=nil;
50 |
51 | [self dismissViewControllerAnimated:YES completion:nil];
52 | }
53 |
54 | - (void)viewDidLoad
55 | {
56 | [super viewDidLoad];
57 | dataBuffer = [NSMutableData data];
58 | // Do any additional setup after loading the view.
59 | [self startBroadCasting];
60 | // [self startBrowsingServices];
61 | }
62 |
63 | - (void)didReceiveMemoryWarning
64 | {
65 | [super didReceiveMemoryWarning];
66 | // Dispose of any resources that can be recreated.
67 | }
68 |
69 | -(void)connectedWithDevice{
70 | self.lblConnect.text=@"Connected with Device";
71 | self.lblConnect.textColor=[UIColor greenColor];
72 | self.txtInfo.hidden=NO;
73 | self.btnSend.hidden=NO;
74 | }
75 |
76 | -(void)disconnectedWithDevice{
77 | self.lblConnect.text=@"No device is connected";
78 | self.lblConnect.textColor=[UIColor redColor];
79 | self.txtInfo.hidden=YES;
80 | self.btnSend.hidden=YES;
81 | }
82 |
83 |
84 | -(void)startBroadCasting{
85 | self.socket=[[GCDAsyncSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
86 | NSError* error = nil;
87 | if ([self.socket acceptOnPort:0 error:&error]) {
88 | self.service =[[NSNetService alloc]initWithDomain:@"local." type:SERVICE_NAME name:@"" port:[self.socket localPort]];
89 | self.service.delegate=self;
90 | [self.service publish];
91 | }else {
92 | NSLog(@"Unable to create socket. Error %@ with user info %@.", error, [error userInfo]);
93 | }
94 | }
95 |
96 | - (void)netServiceDidPublish:(NSNetService *)service {
97 | NSLog(@"Bonjour Service Published: domain(%@) type(%@) name(%@) port(%i)", [service domain], [service type], [service name], (int)[service port]);
98 | }
99 | - (void)netService:(NSNetService *)service didNotPublish:(NSDictionary *)errorDict {
100 | NSLog(@"Failed to Publish Service: domain(%@) type(%@) name(%@) - %@", [service domain], [service type], [service name], errorDict);
101 | }
102 |
103 |
104 | -(void)socket:(GCDAsyncSocket *)sock didAcceptNewSocket:(GCDAsyncSocket *)newSocket{
105 | self.socket= newSocket;
106 |
107 | [self.socket readDataToLength:sizeof(uint64_t) withTimeout:-1.0f tag:0];
108 | [self connectedWithDevice];
109 | NSLog(@"Accepted the new socked");
110 | }
111 |
112 |
113 | - (void)socketDidDisconnect:(GCDAsyncSocket *)socket withError:(NSError *)error {
114 |
115 | NSLog(@"%@", error.userInfo);
116 |
117 | if (self.socket == socket) {
118 |
119 | [self disconnectedWithDevice];
120 | }
121 |
122 |
123 | }
124 |
125 | -(void)socket:(GCDAsyncSocket *)sock didWriteDataWithTag:(long)tag{
126 | NSLog(@"Write data is done");
127 | }
128 |
129 |
130 | -(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
131 |
132 | NSLog(@"Trying to read the data");
133 |
134 | [dataBuffer appendData:data];
135 | if ([sock socketAvailableBytes]==0) {
136 | NSString* strInfo =[[NSString alloc]initWithData:dataBuffer encoding:NSUTF8StringEncoding];
137 | self.lblReceivedInfo.text= strInfo;
138 | [dataBuffer setLength:0];
139 | }
140 |
141 |
142 | [sock readDataWithTimeout:-1.0f tag:0];
143 |
144 | }
145 |
146 | -(GCDAsyncSocket*)getSelectedSocket{
147 | NSNetService* coService =[self.arrServices objectAtIndex:self.selectedIndex];
148 | return [self.dictSockets objectForKey:coService.name];
149 |
150 | }
151 |
152 | - (IBAction)btnSendInfo:(id)sender {
153 | NSDictionary* dictInfo = [NSDictionary dictionaryWithObjectsAndKeys:self.txtInfo.text,@"data", nil];
154 | NSData* dataDict = [NSJSONSerialization dataWithJSONObject:dictInfo options:NSJSONWritingPrettyPrinted error:nil];
155 |
156 | [self.socket writeData:dataDict withTimeout:-1.0f tag:0];
157 |
158 | }
159 |
160 | /*
161 | #pragma mark - Navigation
162 |
163 | // In a storyboard-based application, you will often want to do a little preparation before navigation
164 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
165 | {
166 | // Get the new view controller using [segue destinationViewController].
167 | // Pass the selected object to the new view controller.
168 | }
169 | */
170 |
171 | - (BOOL)textFieldShouldReturn:(UITextField *)textField{
172 | [textField resignFirstResponder];
173 | return YES;
174 | }
175 |
176 | #pragma mark - tableview delegate
177 | -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
178 | return [self.arrServices count];
179 | }
180 |
181 | -(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
182 | UITableViewCell* coTableViewCell =[tableView dequeueReusableCellWithIdentifier:@"deviceName"];
183 | NSNetService* coBrowser = [self.arrServices objectAtIndex:indexPath.row];
184 | coTableViewCell.textLabel.text= coBrowser.name;
185 |
186 | return coTableViewCell;
187 | }
188 |
189 | -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
190 |
191 |
192 | self.selectedIndex= indexPath.row;
193 | NSNetService* coService =[self.arrServices objectAtIndex:indexPath.row];
194 |
195 | NSLog(@"Start connect with device %@", coService.name);
196 | coService.delegate=self;
197 | [coService resolveWithTimeout:30.0f];
198 | }
199 | @end
200 |
--------------------------------------------------------------------------------
/BonjourMac/CHomeViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // CHomeViewController.m
3 | // BonjourMac
4 | //
5 | // Created by Boobalan Munusamy on 5/2/14.
6 | // Copyright (c) 2014 greateindiaclub. All rights reserved.
7 | //
8 |
9 | #import "CHomeViewController.h"
10 |
11 |
12 |
13 | #define SERVICE_NAME @"_probonjore._tcp."
14 | #define ACK_SERVICE_NAME @"_ack._tcp."
15 |
16 | @interface CHomeViewController(){
17 | }
18 | @property (weak) IBOutlet NSTextFieldCell *txtLogs;
19 |
20 | @property(nonatomic,strong) NSNetServiceBrowser* coServiceBrowser;
21 | @property (weak) IBOutlet NSTableView *tblView;
22 |
23 | @property(nonatomic, strong) NSMutableData* mutableData;
24 | @property (weak) IBOutlet NSTextField *lblConnected;
25 |
26 | @property (weak) IBOutlet NSTextField *txtInfo;
27 | @property (weak) IBOutlet NSButton *btnSendInfo;
28 |
29 | @property(nonatomic,strong) NSMutableDictionary* dictSockets;
30 |
31 | @property(nonatomic,strong) NSNetService * service;
32 | @property(nonatomic,strong) GCDAsyncSocket* socket;
33 |
34 | @property(nonatomic, strong) NSMutableData* dataBuffer;
35 | @end
36 |
37 | @implementation CHomeViewController
38 |
39 | - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
40 | {
41 | self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
42 | if (self) {
43 | // Initialization code here.
44 |
45 | [self startService];
46 | // [self publishService];
47 | _dictSockets=[NSMutableDictionary dictionary];
48 | _dataBuffer = [NSMutableData data];
49 | }
50 | return self;
51 | }
52 |
53 |
54 |
55 | -(void)startService{
56 | if (self.arrDevices) {
57 | [self.arrDevices removeAllObjects];
58 |
59 | }else{
60 | _arrDevices=[NSMutableArray array];
61 | }
62 |
63 | _coServiceBrowser=[[NSNetServiceBrowser alloc]init];
64 | self.coServiceBrowser.delegate=self;
65 | [self.coServiceBrowser searchForServicesOfType:SERVICE_NAME inDomain:@"local."];
66 |
67 | }
68 |
69 | #pragma mark- Delegates
70 |
71 | - (NSView *)tableView:(NSTableView *)tableView
72 | viewForTableColumn:(NSTableColumn *)tableColumn
73 | row:(NSInteger)row {
74 |
75 | // Retrieve to get the @"MyView" from the pool or,
76 | // if no version is available in the pool, load the Interface Builder version
77 | NSTableCellView *result = [tableView makeViewWithIdentifier:@"DeviceName" owner:self];
78 |
79 |
80 | if (self.arrDevices.count==0) {
81 | result.textField.stringValue=@"Search Bonjour Devices....";
82 | }else{
83 | // Set the stringValue of the cell's text field to the nameArray value at row
84 | NSNetService* coService=[self.arrDevices objectAtIndex:row];
85 | result.textField.stringValue = coService.name;
86 | }
87 |
88 |
89 | // Return the result
90 | return result;
91 | }
92 |
93 |
94 |
95 | -(NSInteger) numberOfRowsInTableView:(NSTableView *)tableView{
96 | if (self.arrDevices.count==0) {
97 | return 1;
98 | }else{
99 | return self.arrDevices.count;
100 | }
101 |
102 | }
103 |
104 |
105 | - (void)tableViewSelectionDidChange:(NSNotification *)aNotification{
106 | NSLog(@"%@", aNotification.userInfo);
107 |
108 |
109 | NSNetService* coService =[self.arrDevices objectAtIndex:self.tblView.selectedRow];
110 |
111 | NSLog(@"Selected Device %@", coService.name);
112 | coService.delegate=self;
113 | [coService resolveWithTimeout:30.0f];
114 |
115 |
116 |
117 |
118 | }
119 |
120 |
121 | #pragma mark - Service Delegate
122 |
123 | -(void)netService:(NSNetService *)sender didNotResolve:(NSDictionary *)errorDict{
124 |
125 | DLog(@"Didnot resolved: %@", errorDict);
126 | [sender setDelegate:self
127 | ];
128 | }
129 |
130 | -(void)netServiceDidResolveAddress:(NSNetService *)sender{
131 | DLog(@"netServiceDidResolveAddress %@", sender.name);
132 | if ([self connectWithServer:sender]) {
133 | DLog("Connected with server");
134 | NSString* str=[NSString stringWithFormat:@"Connected with %@", sender.name];
135 | DLog(@"Device ")
136 | self.lblConnected.stringValue=str ;
137 | self.lblConnected.textColor=[NSColor greenColor];
138 | }
139 | }
140 |
141 |
142 |
143 |
144 | -(BOOL)connectWithServer:(NSNetService*)service{
145 | BOOL isConnected=NO;
146 |
147 | NSArray* arrAddress =[[service addresses] mutableCopy];
148 | GCDAsyncSocket * coSocket= [self.dictSockets objectForKey:service.name];
149 |
150 |
151 | if (!coSocket || ![coSocket isConnected]) {
152 | GCDAsyncSocket * coSocket=[[GCDAsyncSocket alloc]initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
153 |
154 | //Connect
155 | while (!isConnected && [arrAddress count]) {
156 | NSData* address= [arrAddress objectAtIndex:0];
157 | NSError* error;
158 | if ([coSocket connectToAddress:address error:&error]) {
159 | [self.dictSockets setObject:coSocket forKey:service.name];
160 | isConnected=YES;
161 | }else if(error){
162 | DLog(@"Unable to connect with Device %@ userinfo %@", error,error.userInfo);
163 | }
164 | }
165 | }else{
166 | isConnected = [coSocket isConnected];
167 | }
168 |
169 |
170 | return isConnected;
171 | }
172 |
173 |
174 | #pragma mark GCDAsyncSocket delegate
175 | -(void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(uint16_t)port{
176 | DLog(@"Connected to host: %@ port: %hu", host, port);
177 | [sock readDataToLength:sizeof(uint64_t) withTimeout:-1.0 tag:0];
178 |
179 |
180 | self.txtLogs.stringValue=@"";
181 | self.lblConnected.stringValue=@"Connected with ";
182 |
183 | }
184 |
185 |
186 | -(void)socketDidDisconnect:(GCDAsyncSocket *)sock withError:(NSError *)err{
187 | DLog(@"Disconnected to host: %@", err.userInfo);
188 |
189 | self.lblConnected.stringValue= [NSString stringWithFormat:@"No device is connected"];
190 | self.lblConnected.textColor=[NSColor redColor];
191 |
192 | }
193 |
194 |
195 | -(GCDAsyncSocket*)getSelectedSocket{
196 | NSNetService* coService =[self.arrDevices objectAtIndex:self.tblView.selectedRow];
197 | return [self.dictSockets objectForKey:coService.name];
198 |
199 | }
200 |
201 |
202 | -(void) socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
203 | DLog(@"Read data");
204 |
205 | if ([self getSelectedSocket]== sock) {
206 | [_dataBuffer appendData:data];
207 | if ([sock socketAvailableBytes] == 0) {
208 | //[sock socketFDBytesAvailable];
209 | NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:_dataBuffer options:NSJSONReadingMutableLeaves error:nil];
210 | DLog("Dictionary Info: %@", dict);
211 | NSString* strInfo = (NSString*)[dict objectForKey:@"data"];
212 | [_dataBuffer setLength:0];
213 | self.txtLogs.stringValue= strInfo;
214 | }
215 |
216 | }
217 |
218 |
219 |
220 | [sock readDataWithTimeout:-1.0f tag:0];
221 |
222 |
223 | }
224 |
225 |
226 | -(void)socketDidCloseReadStream:(GCDAsyncSocket *)sock{
227 | DLog(@"Read stream is closed");
228 |
229 |
230 | }
231 | #pragma mark- Service browser delegate;
232 |
233 | -(void)stopBrowsing{
234 | if (self.coServiceBrowser) {
235 | [self.coServiceBrowser stop];
236 | self.coServiceBrowser.delegate=nil;
237 | [self setCoServiceBrowser:nil];
238 | }
239 | }
240 |
241 | -(void) netServiceBrowserDidStopSearch:(NSNetServiceBrowser *)aNetServiceBrowser{
242 | [self stopBrowsing];
243 | }
244 | -(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didNotSearch:(NSDictionary *)errorDict{
245 | [self stopBrowsing];
246 | }
247 |
248 |
249 | -(void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didRemoveService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{
250 | if (aNetService) {
251 |
252 | [self.arrDevices removeObject:aNetService];
253 | }
254 |
255 | if (!moreComing) {
256 | [self.tblView reloadData];
257 | }
258 | }
259 |
260 | - (void)netServiceBrowser:(NSNetServiceBrowser *)aNetServiceBrowser didFindService:(NSNetService *)aNetService moreComing:(BOOL)moreComing{
261 | if (aNetService) {
262 | [self.arrDevices addObject:aNetService];
263 | }
264 |
265 | if (!moreComing) {
266 | [self.arrDevices sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]]];
267 | [self.tblView reloadData];
268 | }
269 | }
270 |
271 |
272 | #pragma mark - Send info
273 | - (IBAction)btnSendInfo:(id)sender {
274 |
275 | NSData* data=[self.txtInfo.stringValue dataUsingEncoding:NSUTF8StringEncoding];
276 |
277 |
278 | [[self getSelectedSocket] writeData:data withTimeout:-1.0f tag:0];
279 |
280 | DLog(@"Write Data");
281 |
282 |
283 | }
284 |
285 |
286 | @end
287 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
27 |
35 |
47 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/BonjourMac/CHomeViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
144 |
145 |
146 |
147 |
148 |
--------------------------------------------------------------------------------
/BonjourIOS/BonjourIOS.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | CC2D33EE1919013D009E58DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D33ED1919013D009E58DA /* Foundation.framework */; };
11 | CC2D33F01919013D009E58DA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D33EF1919013D009E58DA /* CoreGraphics.framework */; };
12 | CC2D33F21919013D009E58DA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D33F11919013D009E58DA /* UIKit.framework */; };
13 | CC2D33F81919013D009E58DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CC2D33F61919013D009E58DA /* InfoPlist.strings */; };
14 | CC2D33FA1919013D009E58DA /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2D33F91919013D009E58DA /* main.m */; };
15 | CC2D33FE1919013D009E58DA /* CAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2D33FD1919013D009E58DA /* CAppDelegate.m */; };
16 | CC2D34011919013D009E58DA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CC2D33FF1919013D009E58DA /* Main.storyboard */; };
17 | CC2D34061919013D009E58DA /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CC2D34051919013D009E58DA /* Images.xcassets */; };
18 | CC2D340D1919013D009E58DA /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D340C1919013D009E58DA /* XCTest.framework */; };
19 | CC2D340E1919013E009E58DA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D33ED1919013D009E58DA /* Foundation.framework */; };
20 | CC2D340F1919013E009E58DA /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D33F11919013D009E58DA /* UIKit.framework */; };
21 | CC2D34171919013E009E58DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CC2D34151919013E009E58DA /* InfoPlist.strings */; };
22 | CC2D34191919013E009E58DA /* BonjourIOSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2D34181919013E009E58DA /* BonjourIOSTests.m */; };
23 | CC2D342819190198009E58DA /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2D342619190198009E58DA /* GCDAsyncSocket.m */; };
24 | CC2D342B191901A6009E58DA /* CHostControllerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2D342A191901A6009E58DA /* CHostControllerViewController.m */; };
25 | CC2D342D191901F1009E58DA /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D342C191901F1009E58DA /* Security.framework */; };
26 | CC2D342F191901F8009E58DA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2D342E191901F8009E58DA /* CFNetwork.framework */; };
27 | /* End PBXBuildFile section */
28 |
29 | /* Begin PBXContainerItemProxy section */
30 | CC2D34101919013E009E58DA /* PBXContainerItemProxy */ = {
31 | isa = PBXContainerItemProxy;
32 | containerPortal = CC2D33E21919013D009E58DA /* Project object */;
33 | proxyType = 1;
34 | remoteGlobalIDString = CC2D33E91919013D009E58DA;
35 | remoteInfo = BonjourIOS;
36 | };
37 | /* End PBXContainerItemProxy section */
38 |
39 | /* Begin PBXFileReference section */
40 | CC2D33EA1919013D009E58DA /* BonjourIOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BonjourIOS.app; sourceTree = BUILT_PRODUCTS_DIR; };
41 | CC2D33ED1919013D009E58DA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
42 | CC2D33EF1919013D009E58DA /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
43 | CC2D33F11919013D009E58DA /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
44 | CC2D33F51919013D009E58DA /* BonjourIOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BonjourIOS-Info.plist"; sourceTree = ""; };
45 | CC2D33F71919013D009E58DA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
46 | CC2D33F91919013D009E58DA /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
47 | CC2D33FB1919013D009E58DA /* BonjourIOS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BonjourIOS-Prefix.pch"; sourceTree = ""; };
48 | CC2D33FC1919013D009E58DA /* CAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CAppDelegate.h; sourceTree = ""; };
49 | CC2D33FD1919013D009E58DA /* CAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CAppDelegate.m; sourceTree = ""; };
50 | CC2D34001919013D009E58DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
51 | CC2D34051919013D009E58DA /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
52 | CC2D340B1919013D009E58DA /* BonjourIOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BonjourIOSTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
53 | CC2D340C1919013D009E58DA /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
54 | CC2D34141919013E009E58DA /* BonjourIOSTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BonjourIOSTests-Info.plist"; sourceTree = ""; };
55 | CC2D34161919013E009E58DA /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
56 | CC2D34181919013E009E58DA /* BonjourIOSTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BonjourIOSTests.m; sourceTree = ""; };
57 | CC2D342619190198009E58DA /* GCDAsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDAsyncSocket.m; sourceTree = ""; };
58 | CC2D342719190198009E58DA /* GCDAsyncSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDAsyncSocket.h; sourceTree = ""; };
59 | CC2D3429191901A6009E58DA /* CHostControllerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHostControllerViewController.h; sourceTree = ""; };
60 | CC2D342A191901A6009E58DA /* CHostControllerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHostControllerViewController.m; sourceTree = ""; };
61 | CC2D342C191901F1009E58DA /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
62 | CC2D342E191901F8009E58DA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
63 | /* End PBXFileReference section */
64 |
65 | /* Begin PBXFrameworksBuildPhase section */
66 | CC2D33E71919013D009E58DA /* Frameworks */ = {
67 | isa = PBXFrameworksBuildPhase;
68 | buildActionMask = 2147483647;
69 | files = (
70 | CC2D342F191901F8009E58DA /* CFNetwork.framework in Frameworks */,
71 | CC2D342D191901F1009E58DA /* Security.framework in Frameworks */,
72 | CC2D33F01919013D009E58DA /* CoreGraphics.framework in Frameworks */,
73 | CC2D33F21919013D009E58DA /* UIKit.framework in Frameworks */,
74 | CC2D33EE1919013D009E58DA /* Foundation.framework in Frameworks */,
75 | );
76 | runOnlyForDeploymentPostprocessing = 0;
77 | };
78 | CC2D34081919013D009E58DA /* Frameworks */ = {
79 | isa = PBXFrameworksBuildPhase;
80 | buildActionMask = 2147483647;
81 | files = (
82 | CC2D340D1919013D009E58DA /* XCTest.framework in Frameworks */,
83 | CC2D340F1919013E009E58DA /* UIKit.framework in Frameworks */,
84 | CC2D340E1919013E009E58DA /* Foundation.framework in Frameworks */,
85 | );
86 | runOnlyForDeploymentPostprocessing = 0;
87 | };
88 | /* End PBXFrameworksBuildPhase section */
89 |
90 | /* Begin PBXGroup section */
91 | CC2D33E11919013D009E58DA = {
92 | isa = PBXGroup;
93 | children = (
94 | CC2D33F31919013D009E58DA /* BonjourIOS */,
95 | CC2D34121919013E009E58DA /* BonjourIOSTests */,
96 | CC2D33EC1919013D009E58DA /* Frameworks */,
97 | CC2D33EB1919013D009E58DA /* Products */,
98 | );
99 | sourceTree = "";
100 | };
101 | CC2D33EB1919013D009E58DA /* Products */ = {
102 | isa = PBXGroup;
103 | children = (
104 | CC2D33EA1919013D009E58DA /* BonjourIOS.app */,
105 | CC2D340B1919013D009E58DA /* BonjourIOSTests.xctest */,
106 | );
107 | name = Products;
108 | sourceTree = "";
109 | };
110 | CC2D33EC1919013D009E58DA /* Frameworks */ = {
111 | isa = PBXGroup;
112 | children = (
113 | CC2D342E191901F8009E58DA /* CFNetwork.framework */,
114 | CC2D342C191901F1009E58DA /* Security.framework */,
115 | CC2D33ED1919013D009E58DA /* Foundation.framework */,
116 | CC2D33EF1919013D009E58DA /* CoreGraphics.framework */,
117 | CC2D33F11919013D009E58DA /* UIKit.framework */,
118 | CC2D340C1919013D009E58DA /* XCTest.framework */,
119 | );
120 | name = Frameworks;
121 | sourceTree = "";
122 | };
123 | CC2D33F31919013D009E58DA /* BonjourIOS */ = {
124 | isa = PBXGroup;
125 | children = (
126 | CC2D3429191901A6009E58DA /* CHostControllerViewController.h */,
127 | CC2D342A191901A6009E58DA /* CHostControllerViewController.m */,
128 | CC2D342519190190009E58DA /* ThridParty */,
129 | CC2D33FC1919013D009E58DA /* CAppDelegate.h */,
130 | CC2D33FD1919013D009E58DA /* CAppDelegate.m */,
131 | CC2D33FF1919013D009E58DA /* Main.storyboard */,
132 | CC2D34051919013D009E58DA /* Images.xcassets */,
133 | CC2D33F41919013D009E58DA /* Supporting Files */,
134 | );
135 | path = BonjourIOS;
136 | sourceTree = "";
137 | };
138 | CC2D33F41919013D009E58DA /* Supporting Files */ = {
139 | isa = PBXGroup;
140 | children = (
141 | CC2D33F51919013D009E58DA /* BonjourIOS-Info.plist */,
142 | CC2D33F61919013D009E58DA /* InfoPlist.strings */,
143 | CC2D33F91919013D009E58DA /* main.m */,
144 | CC2D33FB1919013D009E58DA /* BonjourIOS-Prefix.pch */,
145 | );
146 | name = "Supporting Files";
147 | sourceTree = "";
148 | };
149 | CC2D34121919013E009E58DA /* BonjourIOSTests */ = {
150 | isa = PBXGroup;
151 | children = (
152 | CC2D34181919013E009E58DA /* BonjourIOSTests.m */,
153 | CC2D34131919013E009E58DA /* Supporting Files */,
154 | );
155 | path = BonjourIOSTests;
156 | sourceTree = "";
157 | };
158 | CC2D34131919013E009E58DA /* Supporting Files */ = {
159 | isa = PBXGroup;
160 | children = (
161 | CC2D34141919013E009E58DA /* BonjourIOSTests-Info.plist */,
162 | CC2D34151919013E009E58DA /* InfoPlist.strings */,
163 | );
164 | name = "Supporting Files";
165 | sourceTree = "";
166 | };
167 | CC2D342519190190009E58DA /* ThridParty */ = {
168 | isa = PBXGroup;
169 | children = (
170 | CC2D342619190198009E58DA /* GCDAsyncSocket.m */,
171 | CC2D342719190198009E58DA /* GCDAsyncSocket.h */,
172 | );
173 | name = ThridParty;
174 | sourceTree = "";
175 | };
176 | /* End PBXGroup section */
177 |
178 | /* Begin PBXNativeTarget section */
179 | CC2D33E91919013D009E58DA /* BonjourIOS */ = {
180 | isa = PBXNativeTarget;
181 | buildConfigurationList = CC2D341C1919013E009E58DA /* Build configuration list for PBXNativeTarget "BonjourIOS" */;
182 | buildPhases = (
183 | CC2D33E61919013D009E58DA /* Sources */,
184 | CC2D33E71919013D009E58DA /* Frameworks */,
185 | CC2D33E81919013D009E58DA /* Resources */,
186 | );
187 | buildRules = (
188 | );
189 | dependencies = (
190 | );
191 | name = BonjourIOS;
192 | productName = BonjourIOS;
193 | productReference = CC2D33EA1919013D009E58DA /* BonjourIOS.app */;
194 | productType = "com.apple.product-type.application";
195 | };
196 | CC2D340A1919013D009E58DA /* BonjourIOSTests */ = {
197 | isa = PBXNativeTarget;
198 | buildConfigurationList = CC2D341F1919013E009E58DA /* Build configuration list for PBXNativeTarget "BonjourIOSTests" */;
199 | buildPhases = (
200 | CC2D34071919013D009E58DA /* Sources */,
201 | CC2D34081919013D009E58DA /* Frameworks */,
202 | CC2D34091919013D009E58DA /* Resources */,
203 | );
204 | buildRules = (
205 | );
206 | dependencies = (
207 | CC2D34111919013E009E58DA /* PBXTargetDependency */,
208 | );
209 | name = BonjourIOSTests;
210 | productName = BonjourIOSTests;
211 | productReference = CC2D340B1919013D009E58DA /* BonjourIOSTests.xctest */;
212 | productType = "com.apple.product-type.bundle.unit-test";
213 | };
214 | /* End PBXNativeTarget section */
215 |
216 | /* Begin PBXProject section */
217 | CC2D33E21919013D009E58DA /* Project object */ = {
218 | isa = PBXProject;
219 | attributes = {
220 | CLASSPREFIX = C;
221 | LastUpgradeCheck = 0510;
222 | ORGANIZATIONNAME = greateindialcub;
223 | TargetAttributes = {
224 | CC2D340A1919013D009E58DA = {
225 | TestTargetID = CC2D33E91919013D009E58DA;
226 | };
227 | };
228 | };
229 | buildConfigurationList = CC2D33E51919013D009E58DA /* Build configuration list for PBXProject "BonjourIOS" */;
230 | compatibilityVersion = "Xcode 3.2";
231 | developmentRegion = English;
232 | hasScannedForEncodings = 0;
233 | knownRegions = (
234 | en,
235 | Base,
236 | );
237 | mainGroup = CC2D33E11919013D009E58DA;
238 | productRefGroup = CC2D33EB1919013D009E58DA /* Products */;
239 | projectDirPath = "";
240 | projectRoot = "";
241 | targets = (
242 | CC2D33E91919013D009E58DA /* BonjourIOS */,
243 | CC2D340A1919013D009E58DA /* BonjourIOSTests */,
244 | );
245 | };
246 | /* End PBXProject section */
247 |
248 | /* Begin PBXResourcesBuildPhase section */
249 | CC2D33E81919013D009E58DA /* Resources */ = {
250 | isa = PBXResourcesBuildPhase;
251 | buildActionMask = 2147483647;
252 | files = (
253 | CC2D34061919013D009E58DA /* Images.xcassets in Resources */,
254 | CC2D33F81919013D009E58DA /* InfoPlist.strings in Resources */,
255 | CC2D34011919013D009E58DA /* Main.storyboard in Resources */,
256 | );
257 | runOnlyForDeploymentPostprocessing = 0;
258 | };
259 | CC2D34091919013D009E58DA /* Resources */ = {
260 | isa = PBXResourcesBuildPhase;
261 | buildActionMask = 2147483647;
262 | files = (
263 | CC2D34171919013E009E58DA /* InfoPlist.strings in Resources */,
264 | );
265 | runOnlyForDeploymentPostprocessing = 0;
266 | };
267 | /* End PBXResourcesBuildPhase section */
268 |
269 | /* Begin PBXSourcesBuildPhase section */
270 | CC2D33E61919013D009E58DA /* Sources */ = {
271 | isa = PBXSourcesBuildPhase;
272 | buildActionMask = 2147483647;
273 | files = (
274 | CC2D342819190198009E58DA /* GCDAsyncSocket.m in Sources */,
275 | CC2D33FE1919013D009E58DA /* CAppDelegate.m in Sources */,
276 | CC2D342B191901A6009E58DA /* CHostControllerViewController.m in Sources */,
277 | CC2D33FA1919013D009E58DA /* main.m in Sources */,
278 | );
279 | runOnlyForDeploymentPostprocessing = 0;
280 | };
281 | CC2D34071919013D009E58DA /* Sources */ = {
282 | isa = PBXSourcesBuildPhase;
283 | buildActionMask = 2147483647;
284 | files = (
285 | CC2D34191919013E009E58DA /* BonjourIOSTests.m in Sources */,
286 | );
287 | runOnlyForDeploymentPostprocessing = 0;
288 | };
289 | /* End PBXSourcesBuildPhase section */
290 |
291 | /* Begin PBXTargetDependency section */
292 | CC2D34111919013E009E58DA /* PBXTargetDependency */ = {
293 | isa = PBXTargetDependency;
294 | target = CC2D33E91919013D009E58DA /* BonjourIOS */;
295 | targetProxy = CC2D34101919013E009E58DA /* PBXContainerItemProxy */;
296 | };
297 | /* End PBXTargetDependency section */
298 |
299 | /* Begin PBXVariantGroup section */
300 | CC2D33F61919013D009E58DA /* InfoPlist.strings */ = {
301 | isa = PBXVariantGroup;
302 | children = (
303 | CC2D33F71919013D009E58DA /* en */,
304 | );
305 | name = InfoPlist.strings;
306 | sourceTree = "";
307 | };
308 | CC2D33FF1919013D009E58DA /* Main.storyboard */ = {
309 | isa = PBXVariantGroup;
310 | children = (
311 | CC2D34001919013D009E58DA /* Base */,
312 | );
313 | name = Main.storyboard;
314 | sourceTree = "";
315 | };
316 | CC2D34151919013E009E58DA /* InfoPlist.strings */ = {
317 | isa = PBXVariantGroup;
318 | children = (
319 | CC2D34161919013E009E58DA /* en */,
320 | );
321 | name = InfoPlist.strings;
322 | sourceTree = "";
323 | };
324 | /* End PBXVariantGroup section */
325 |
326 | /* Begin XCBuildConfiguration section */
327 | CC2D341A1919013E009E58DA /* Debug */ = {
328 | isa = XCBuildConfiguration;
329 | buildSettings = {
330 | ALWAYS_SEARCH_USER_PATHS = NO;
331 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
332 | CLANG_CXX_LIBRARY = "libc++";
333 | CLANG_ENABLE_MODULES = YES;
334 | CLANG_ENABLE_OBJC_ARC = YES;
335 | CLANG_WARN_BOOL_CONVERSION = YES;
336 | CLANG_WARN_CONSTANT_CONVERSION = YES;
337 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
338 | CLANG_WARN_EMPTY_BODY = YES;
339 | CLANG_WARN_ENUM_CONVERSION = YES;
340 | CLANG_WARN_INT_CONVERSION = YES;
341 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
342 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
343 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
344 | COPY_PHASE_STRIP = NO;
345 | GCC_C_LANGUAGE_STANDARD = gnu99;
346 | GCC_DYNAMIC_NO_PIC = NO;
347 | GCC_OPTIMIZATION_LEVEL = 0;
348 | GCC_PREPROCESSOR_DEFINITIONS = (
349 | "DEBUG=1",
350 | "$(inherited)",
351 | );
352 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
353 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
354 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
355 | GCC_WARN_UNDECLARED_SELECTOR = YES;
356 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
357 | GCC_WARN_UNUSED_FUNCTION = YES;
358 | GCC_WARN_UNUSED_VARIABLE = YES;
359 | IPHONEOS_DEPLOYMENT_TARGET = 7.1;
360 | ONLY_ACTIVE_ARCH = YES;
361 | SDKROOT = iphoneos;
362 | };
363 | name = Debug;
364 | };
365 | CC2D341B1919013E009E58DA /* Release */ = {
366 | isa = XCBuildConfiguration;
367 | buildSettings = {
368 | ALWAYS_SEARCH_USER_PATHS = NO;
369 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
370 | CLANG_CXX_LIBRARY = "libc++";
371 | CLANG_ENABLE_MODULES = YES;
372 | CLANG_ENABLE_OBJC_ARC = YES;
373 | CLANG_WARN_BOOL_CONVERSION = YES;
374 | CLANG_WARN_CONSTANT_CONVERSION = YES;
375 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
376 | CLANG_WARN_EMPTY_BODY = YES;
377 | CLANG_WARN_ENUM_CONVERSION = YES;
378 | CLANG_WARN_INT_CONVERSION = YES;
379 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
380 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
381 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
382 | COPY_PHASE_STRIP = YES;
383 | ENABLE_NS_ASSERTIONS = NO;
384 | GCC_C_LANGUAGE_STANDARD = gnu99;
385 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
386 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
387 | GCC_WARN_UNDECLARED_SELECTOR = YES;
388 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
389 | GCC_WARN_UNUSED_FUNCTION = YES;
390 | GCC_WARN_UNUSED_VARIABLE = YES;
391 | IPHONEOS_DEPLOYMENT_TARGET = 7.1;
392 | SDKROOT = iphoneos;
393 | VALIDATE_PRODUCT = YES;
394 | };
395 | name = Release;
396 | };
397 | CC2D341D1919013E009E58DA /* Debug */ = {
398 | isa = XCBuildConfiguration;
399 | buildSettings = {
400 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
401 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
402 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
403 | GCC_PREFIX_HEADER = "BonjourIOS/BonjourIOS-Prefix.pch";
404 | INFOPLIST_FILE = "BonjourIOS/BonjourIOS-Info.plist";
405 | PRODUCT_NAME = "$(TARGET_NAME)";
406 | WRAPPER_EXTENSION = app;
407 | };
408 | name = Debug;
409 | };
410 | CC2D341E1919013E009E58DA /* Release */ = {
411 | isa = XCBuildConfiguration;
412 | buildSettings = {
413 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
414 | ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
415 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
416 | GCC_PREFIX_HEADER = "BonjourIOS/BonjourIOS-Prefix.pch";
417 | INFOPLIST_FILE = "BonjourIOS/BonjourIOS-Info.plist";
418 | PRODUCT_NAME = "$(TARGET_NAME)";
419 | WRAPPER_EXTENSION = app;
420 | };
421 | name = Release;
422 | };
423 | CC2D34201919013E009E58DA /* Debug */ = {
424 | isa = XCBuildConfiguration;
425 | buildSettings = {
426 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/BonjourIOS.app/BonjourIOS";
427 | FRAMEWORK_SEARCH_PATHS = (
428 | "$(SDKROOT)/Developer/Library/Frameworks",
429 | "$(inherited)",
430 | "$(DEVELOPER_FRAMEWORKS_DIR)",
431 | );
432 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
433 | GCC_PREFIX_HEADER = "BonjourIOS/BonjourIOS-Prefix.pch";
434 | GCC_PREPROCESSOR_DEFINITIONS = (
435 | "DEBUG=1",
436 | "$(inherited)",
437 | );
438 | INFOPLIST_FILE = "BonjourIOSTests/BonjourIOSTests-Info.plist";
439 | PRODUCT_NAME = "$(TARGET_NAME)";
440 | TEST_HOST = "$(BUNDLE_LOADER)";
441 | WRAPPER_EXTENSION = xctest;
442 | };
443 | name = Debug;
444 | };
445 | CC2D34211919013E009E58DA /* Release */ = {
446 | isa = XCBuildConfiguration;
447 | buildSettings = {
448 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/BonjourIOS.app/BonjourIOS";
449 | FRAMEWORK_SEARCH_PATHS = (
450 | "$(SDKROOT)/Developer/Library/Frameworks",
451 | "$(inherited)",
452 | "$(DEVELOPER_FRAMEWORKS_DIR)",
453 | );
454 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
455 | GCC_PREFIX_HEADER = "BonjourIOS/BonjourIOS-Prefix.pch";
456 | INFOPLIST_FILE = "BonjourIOSTests/BonjourIOSTests-Info.plist";
457 | PRODUCT_NAME = "$(TARGET_NAME)";
458 | TEST_HOST = "$(BUNDLE_LOADER)";
459 | WRAPPER_EXTENSION = xctest;
460 | };
461 | name = Release;
462 | };
463 | /* End XCBuildConfiguration section */
464 |
465 | /* Begin XCConfigurationList section */
466 | CC2D33E51919013D009E58DA /* Build configuration list for PBXProject "BonjourIOS" */ = {
467 | isa = XCConfigurationList;
468 | buildConfigurations = (
469 | CC2D341A1919013E009E58DA /* Debug */,
470 | CC2D341B1919013E009E58DA /* Release */,
471 | );
472 | defaultConfigurationIsVisible = 0;
473 | defaultConfigurationName = Release;
474 | };
475 | CC2D341C1919013E009E58DA /* Build configuration list for PBXNativeTarget "BonjourIOS" */ = {
476 | isa = XCConfigurationList;
477 | buildConfigurations = (
478 | CC2D341D1919013E009E58DA /* Debug */,
479 | CC2D341E1919013E009E58DA /* Release */,
480 | );
481 | defaultConfigurationIsVisible = 0;
482 | };
483 | CC2D341F1919013E009E58DA /* Build configuration list for PBXNativeTarget "BonjourIOSTests" */ = {
484 | isa = XCConfigurationList;
485 | buildConfigurations = (
486 | CC2D34201919013E009E58DA /* Debug */,
487 | CC2D34211919013E009E58DA /* Release */,
488 | );
489 | defaultConfigurationIsVisible = 0;
490 | };
491 | /* End XCConfigurationList section */
492 | };
493 | rootObject = CC2D33E21919013D009E58DA /* Project object */;
494 | }
495 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | CC2996B61913A7150039CE21 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2996B51913A7150039CE21 /* Cocoa.framework */; };
11 | CC2996C01913A7150039CE21 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CC2996BE1913A7150039CE21 /* InfoPlist.strings */; };
12 | CC2996C21913A7150039CE21 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2996C11913A7150039CE21 /* main.m */; };
13 | CC2996C61913A7150039CE21 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = CC2996C41913A7150039CE21 /* Credits.rtf */; };
14 | CC2996C91913A7150039CE21 /* CAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2996C81913A7150039CE21 /* CAppDelegate.m */; };
15 | CC2996CC1913A7150039CE21 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = CC2996CA1913A7150039CE21 /* MainMenu.xib */; };
16 | CC2996CE1913A7150039CE21 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CC2996CD1913A7150039CE21 /* Images.xcassets */; };
17 | CC2996D51913A7150039CE21 /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2996D41913A7150039CE21 /* XCTest.framework */; };
18 | CC2996D61913A7150039CE21 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CC2996B51913A7150039CE21 /* Cocoa.framework */; };
19 | CC2996DE1913A7150039CE21 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CC2996DC1913A7150039CE21 /* InfoPlist.strings */; };
20 | CC2996E01913A7150039CE21 /* BonjourMacTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2996DF1913A7150039CE21 /* BonjourMacTests.m */; };
21 | CC2996F31913A9D30039CE21 /* CHomeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CC2996F11913A9D20039CE21 /* CHomeViewController.m */; };
22 | CC2996F41913A9D30039CE21 /* CHomeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = CC2996F21913A9D20039CE21 /* CHomeViewController.xib */; };
23 | CC3E051B1917616600416245 /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3E051A1917616600416245 /* GCDAsyncSocket.m */; };
24 | /* End PBXBuildFile section */
25 |
26 | /* Begin PBXContainerItemProxy section */
27 | CC2996D71913A7150039CE21 /* PBXContainerItemProxy */ = {
28 | isa = PBXContainerItemProxy;
29 | containerPortal = CC2996AA1913A7150039CE21 /* Project object */;
30 | proxyType = 1;
31 | remoteGlobalIDString = CC2996B11913A7150039CE21;
32 | remoteInfo = BonjourMac;
33 | };
34 | /* End PBXContainerItemProxy section */
35 |
36 | /* Begin PBXFileReference section */
37 | CC2996B21913A7150039CE21 /* BonjourMac.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = BonjourMac.app; sourceTree = BUILT_PRODUCTS_DIR; };
38 | CC2996B51913A7150039CE21 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
39 | CC2996B81913A7150039CE21 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
40 | CC2996B91913A7150039CE21 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
41 | CC2996BA1913A7150039CE21 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
42 | CC2996BD1913A7150039CE21 /* BonjourMac-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BonjourMac-Info.plist"; sourceTree = ""; };
43 | CC2996BF1913A7150039CE21 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
44 | CC2996C11913A7150039CE21 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
45 | CC2996C31913A7150039CE21 /* BonjourMac-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "BonjourMac-Prefix.pch"; sourceTree = ""; };
46 | CC2996C51913A7150039CE21 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; };
47 | CC2996C71913A7150039CE21 /* CAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CAppDelegate.h; sourceTree = ""; };
48 | CC2996C81913A7150039CE21 /* CAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CAppDelegate.m; sourceTree = ""; };
49 | CC2996CB1913A7150039CE21 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; };
50 | CC2996CD1913A7150039CE21 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
51 | CC2996D31913A7150039CE21 /* BonjourMacTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = BonjourMacTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
52 | CC2996D41913A7150039CE21 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
53 | CC2996DB1913A7150039CE21 /* BonjourMacTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "BonjourMacTests-Info.plist"; sourceTree = ""; };
54 | CC2996DD1913A7150039CE21 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; };
55 | CC2996DF1913A7150039CE21 /* BonjourMacTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BonjourMacTests.m; sourceTree = ""; };
56 | CC2996F01913A9D20039CE21 /* CHomeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CHomeViewController.h; sourceTree = ""; };
57 | CC2996F11913A9D20039CE21 /* CHomeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CHomeViewController.m; sourceTree = ""; };
58 | CC2996F21913A9D20039CE21 /* CHomeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CHomeViewController.xib; sourceTree = ""; };
59 | CC3E05191917616600416245 /* GCDAsyncSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCDAsyncSocket.h; sourceTree = ""; };
60 | CC3E051A1917616600416245 /* GCDAsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GCDAsyncSocket.m; sourceTree = ""; };
61 | /* End PBXFileReference section */
62 |
63 | /* Begin PBXFrameworksBuildPhase section */
64 | CC2996AF1913A7150039CE21 /* Frameworks */ = {
65 | isa = PBXFrameworksBuildPhase;
66 | buildActionMask = 2147483647;
67 | files = (
68 | CC2996B61913A7150039CE21 /* Cocoa.framework in Frameworks */,
69 | );
70 | runOnlyForDeploymentPostprocessing = 0;
71 | };
72 | CC2996D01913A7150039CE21 /* Frameworks */ = {
73 | isa = PBXFrameworksBuildPhase;
74 | buildActionMask = 2147483647;
75 | files = (
76 | CC2996D61913A7150039CE21 /* Cocoa.framework in Frameworks */,
77 | CC2996D51913A7150039CE21 /* XCTest.framework in Frameworks */,
78 | );
79 | runOnlyForDeploymentPostprocessing = 0;
80 | };
81 | /* End PBXFrameworksBuildPhase section */
82 |
83 | /* Begin PBXGroup section */
84 | CC2996A91913A7150039CE21 = {
85 | isa = PBXGroup;
86 | children = (
87 | CC2996F51913AF760039CE21 /* Util */,
88 | CC2996E91913A71F0039CE21 /* Controller */,
89 | CC2996BB1913A7150039CE21 /* BonjourMac */,
90 | CC2996D91913A7150039CE21 /* BonjourMacTests */,
91 | CC2996B41913A7150039CE21 /* Frameworks */,
92 | CC2996B31913A7150039CE21 /* Products */,
93 | );
94 | sourceTree = "";
95 | };
96 | CC2996B31913A7150039CE21 /* Products */ = {
97 | isa = PBXGroup;
98 | children = (
99 | CC2996B21913A7150039CE21 /* BonjourMac.app */,
100 | CC2996D31913A7150039CE21 /* BonjourMacTests.xctest */,
101 | );
102 | name = Products;
103 | sourceTree = "";
104 | };
105 | CC2996B41913A7150039CE21 /* Frameworks */ = {
106 | isa = PBXGroup;
107 | children = (
108 | CC2996B51913A7150039CE21 /* Cocoa.framework */,
109 | CC2996D41913A7150039CE21 /* XCTest.framework */,
110 | CC2996B71913A7150039CE21 /* Other Frameworks */,
111 | );
112 | name = Frameworks;
113 | sourceTree = "";
114 | };
115 | CC2996B71913A7150039CE21 /* Other Frameworks */ = {
116 | isa = PBXGroup;
117 | children = (
118 | CC2996B81913A7150039CE21 /* AppKit.framework */,
119 | CC2996B91913A7150039CE21 /* CoreData.framework */,
120 | CC2996BA1913A7150039CE21 /* Foundation.framework */,
121 | );
122 | name = "Other Frameworks";
123 | sourceTree = "";
124 | };
125 | CC2996BB1913A7150039CE21 /* BonjourMac */ = {
126 | isa = PBXGroup;
127 | children = (
128 | CC2996C71913A7150039CE21 /* CAppDelegate.h */,
129 | CC2996C81913A7150039CE21 /* CAppDelegate.m */,
130 | CC2996CA1913A7150039CE21 /* MainMenu.xib */,
131 | CC2996CD1913A7150039CE21 /* Images.xcassets */,
132 | CC2996BC1913A7150039CE21 /* Supporting Files */,
133 | );
134 | path = BonjourMac;
135 | sourceTree = "";
136 | };
137 | CC2996BC1913A7150039CE21 /* Supporting Files */ = {
138 | isa = PBXGroup;
139 | children = (
140 | CC2996BD1913A7150039CE21 /* BonjourMac-Info.plist */,
141 | CC2996BE1913A7150039CE21 /* InfoPlist.strings */,
142 | CC2996C11913A7150039CE21 /* main.m */,
143 | CC2996C31913A7150039CE21 /* BonjourMac-Prefix.pch */,
144 | CC2996C41913A7150039CE21 /* Credits.rtf */,
145 | );
146 | name = "Supporting Files";
147 | sourceTree = "";
148 | };
149 | CC2996D91913A7150039CE21 /* BonjourMacTests */ = {
150 | isa = PBXGroup;
151 | children = (
152 | CC2996DF1913A7150039CE21 /* BonjourMacTests.m */,
153 | CC2996DA1913A7150039CE21 /* Supporting Files */,
154 | );
155 | path = BonjourMacTests;
156 | sourceTree = "";
157 | };
158 | CC2996DA1913A7150039CE21 /* Supporting Files */ = {
159 | isa = PBXGroup;
160 | children = (
161 | CC2996DB1913A7150039CE21 /* BonjourMacTests-Info.plist */,
162 | CC2996DC1913A7150039CE21 /* InfoPlist.strings */,
163 | );
164 | name = "Supporting Files";
165 | sourceTree = "";
166 | };
167 | CC2996E91913A71F0039CE21 /* Controller */ = {
168 | isa = PBXGroup;
169 | children = (
170 | CC2996F01913A9D20039CE21 /* CHomeViewController.h */,
171 | CC2996F11913A9D20039CE21 /* CHomeViewController.m */,
172 | CC2996F21913A9D20039CE21 /* CHomeViewController.xib */,
173 | );
174 | name = Controller;
175 | sourceTree = "";
176 | };
177 | CC2996F51913AF760039CE21 /* Util */ = {
178 | isa = PBXGroup;
179 | children = (
180 | CC3E05191917616600416245 /* GCDAsyncSocket.h */,
181 | CC3E051A1917616600416245 /* GCDAsyncSocket.m */,
182 | );
183 | name = Util;
184 | sourceTree = "";
185 | };
186 | /* End PBXGroup section */
187 |
188 | /* Begin PBXNativeTarget section */
189 | CC2996B11913A7150039CE21 /* BonjourMac */ = {
190 | isa = PBXNativeTarget;
191 | buildConfigurationList = CC2996E31913A7150039CE21 /* Build configuration list for PBXNativeTarget "BonjourMac" */;
192 | buildPhases = (
193 | CC2996AE1913A7150039CE21 /* Sources */,
194 | CC2996AF1913A7150039CE21 /* Frameworks */,
195 | CC2996B01913A7150039CE21 /* Resources */,
196 | );
197 | buildRules = (
198 | );
199 | dependencies = (
200 | );
201 | name = BonjourMac;
202 | productName = BonjourMac;
203 | productReference = CC2996B21913A7150039CE21 /* BonjourMac.app */;
204 | productType = "com.apple.product-type.application";
205 | };
206 | CC2996D21913A7150039CE21 /* BonjourMacTests */ = {
207 | isa = PBXNativeTarget;
208 | buildConfigurationList = CC2996E61913A7150039CE21 /* Build configuration list for PBXNativeTarget "BonjourMacTests" */;
209 | buildPhases = (
210 | CC2996CF1913A7150039CE21 /* Sources */,
211 | CC2996D01913A7150039CE21 /* Frameworks */,
212 | CC2996D11913A7150039CE21 /* Resources */,
213 | );
214 | buildRules = (
215 | );
216 | dependencies = (
217 | CC2996D81913A7150039CE21 /* PBXTargetDependency */,
218 | );
219 | name = BonjourMacTests;
220 | productName = BonjourMacTests;
221 | productReference = CC2996D31913A7150039CE21 /* BonjourMacTests.xctest */;
222 | productType = "com.apple.product-type.bundle.unit-test";
223 | };
224 | /* End PBXNativeTarget section */
225 |
226 | /* Begin PBXProject section */
227 | CC2996AA1913A7150039CE21 /* Project object */ = {
228 | isa = PBXProject;
229 | attributes = {
230 | CLASSPREFIX = C;
231 | LastUpgradeCheck = 0510;
232 | ORGANIZATIONNAME = Prokarma;
233 | TargetAttributes = {
234 | CC2996D21913A7150039CE21 = {
235 | TestTargetID = CC2996B11913A7150039CE21;
236 | };
237 | };
238 | };
239 | buildConfigurationList = CC2996AD1913A7150039CE21 /* Build configuration list for PBXProject "BonjourMac" */;
240 | compatibilityVersion = "Xcode 3.2";
241 | developmentRegion = English;
242 | hasScannedForEncodings = 0;
243 | knownRegions = (
244 | en,
245 | Base,
246 | );
247 | mainGroup = CC2996A91913A7150039CE21;
248 | productRefGroup = CC2996B31913A7150039CE21 /* Products */;
249 | projectDirPath = "";
250 | projectRoot = "";
251 | targets = (
252 | CC2996B11913A7150039CE21 /* BonjourMac */,
253 | CC2996D21913A7150039CE21 /* BonjourMacTests */,
254 | );
255 | };
256 | /* End PBXProject section */
257 |
258 | /* Begin PBXResourcesBuildPhase section */
259 | CC2996B01913A7150039CE21 /* Resources */ = {
260 | isa = PBXResourcesBuildPhase;
261 | buildActionMask = 2147483647;
262 | files = (
263 | CC2996C01913A7150039CE21 /* InfoPlist.strings in Resources */,
264 | CC2996F41913A9D30039CE21 /* CHomeViewController.xib in Resources */,
265 | CC2996CE1913A7150039CE21 /* Images.xcassets in Resources */,
266 | CC2996C61913A7150039CE21 /* Credits.rtf in Resources */,
267 | CC2996CC1913A7150039CE21 /* MainMenu.xib in Resources */,
268 | );
269 | runOnlyForDeploymentPostprocessing = 0;
270 | };
271 | CC2996D11913A7150039CE21 /* Resources */ = {
272 | isa = PBXResourcesBuildPhase;
273 | buildActionMask = 2147483647;
274 | files = (
275 | CC2996DE1913A7150039CE21 /* InfoPlist.strings in Resources */,
276 | );
277 | runOnlyForDeploymentPostprocessing = 0;
278 | };
279 | /* End PBXResourcesBuildPhase section */
280 |
281 | /* Begin PBXSourcesBuildPhase section */
282 | CC2996AE1913A7150039CE21 /* Sources */ = {
283 | isa = PBXSourcesBuildPhase;
284 | buildActionMask = 2147483647;
285 | files = (
286 | CC2996C91913A7150039CE21 /* CAppDelegate.m in Sources */,
287 | CC3E051B1917616600416245 /* GCDAsyncSocket.m in Sources */,
288 | CC2996C21913A7150039CE21 /* main.m in Sources */,
289 | CC2996F31913A9D30039CE21 /* CHomeViewController.m in Sources */,
290 | );
291 | runOnlyForDeploymentPostprocessing = 0;
292 | };
293 | CC2996CF1913A7150039CE21 /* Sources */ = {
294 | isa = PBXSourcesBuildPhase;
295 | buildActionMask = 2147483647;
296 | files = (
297 | CC2996E01913A7150039CE21 /* BonjourMacTests.m in Sources */,
298 | );
299 | runOnlyForDeploymentPostprocessing = 0;
300 | };
301 | /* End PBXSourcesBuildPhase section */
302 |
303 | /* Begin PBXTargetDependency section */
304 | CC2996D81913A7150039CE21 /* PBXTargetDependency */ = {
305 | isa = PBXTargetDependency;
306 | target = CC2996B11913A7150039CE21 /* BonjourMac */;
307 | targetProxy = CC2996D71913A7150039CE21 /* PBXContainerItemProxy */;
308 | };
309 | /* End PBXTargetDependency section */
310 |
311 | /* Begin PBXVariantGroup section */
312 | CC2996BE1913A7150039CE21 /* InfoPlist.strings */ = {
313 | isa = PBXVariantGroup;
314 | children = (
315 | CC2996BF1913A7150039CE21 /* en */,
316 | );
317 | name = InfoPlist.strings;
318 | sourceTree = "";
319 | };
320 | CC2996C41913A7150039CE21 /* Credits.rtf */ = {
321 | isa = PBXVariantGroup;
322 | children = (
323 | CC2996C51913A7150039CE21 /* en */,
324 | );
325 | name = Credits.rtf;
326 | sourceTree = "";
327 | };
328 | CC2996CA1913A7150039CE21 /* MainMenu.xib */ = {
329 | isa = PBXVariantGroup;
330 | children = (
331 | CC2996CB1913A7150039CE21 /* Base */,
332 | );
333 | name = MainMenu.xib;
334 | sourceTree = "";
335 | };
336 | CC2996DC1913A7150039CE21 /* InfoPlist.strings */ = {
337 | isa = PBXVariantGroup;
338 | children = (
339 | CC2996DD1913A7150039CE21 /* en */,
340 | );
341 | name = InfoPlist.strings;
342 | sourceTree = "";
343 | };
344 | /* End PBXVariantGroup section */
345 |
346 | /* Begin XCBuildConfiguration section */
347 | CC2996E11913A7150039CE21 /* Debug */ = {
348 | isa = XCBuildConfiguration;
349 | buildSettings = {
350 | ALWAYS_SEARCH_USER_PATHS = NO;
351 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
352 | CLANG_CXX_LIBRARY = "libc++";
353 | CLANG_ENABLE_MODULES = YES;
354 | CLANG_ENABLE_OBJC_ARC = YES;
355 | CLANG_WARN_BOOL_CONVERSION = YES;
356 | CLANG_WARN_CONSTANT_CONVERSION = YES;
357 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
358 | CLANG_WARN_EMPTY_BODY = YES;
359 | CLANG_WARN_ENUM_CONVERSION = YES;
360 | CLANG_WARN_INT_CONVERSION = YES;
361 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
362 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
363 | COPY_PHASE_STRIP = NO;
364 | GCC_C_LANGUAGE_STANDARD = gnu99;
365 | GCC_DYNAMIC_NO_PIC = NO;
366 | GCC_ENABLE_OBJC_EXCEPTIONS = YES;
367 | GCC_OPTIMIZATION_LEVEL = 0;
368 | GCC_PREPROCESSOR_DEFINITIONS = (
369 | "DEBUG=1",
370 | "$(inherited)",
371 | );
372 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
373 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
374 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
375 | GCC_WARN_UNDECLARED_SELECTOR = YES;
376 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
377 | GCC_WARN_UNUSED_FUNCTION = YES;
378 | GCC_WARN_UNUSED_VARIABLE = YES;
379 | MACOSX_DEPLOYMENT_TARGET = 10.9;
380 | ONLY_ACTIVE_ARCH = YES;
381 | SDKROOT = macosx;
382 | };
383 | name = Debug;
384 | };
385 | CC2996E21913A7150039CE21 /* Release */ = {
386 | isa = XCBuildConfiguration;
387 | buildSettings = {
388 | ALWAYS_SEARCH_USER_PATHS = NO;
389 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
390 | CLANG_CXX_LIBRARY = "libc++";
391 | CLANG_ENABLE_MODULES = YES;
392 | CLANG_ENABLE_OBJC_ARC = YES;
393 | CLANG_WARN_BOOL_CONVERSION = YES;
394 | CLANG_WARN_CONSTANT_CONVERSION = YES;
395 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
396 | CLANG_WARN_EMPTY_BODY = YES;
397 | CLANG_WARN_ENUM_CONVERSION = YES;
398 | CLANG_WARN_INT_CONVERSION = YES;
399 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
400 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
401 | COPY_PHASE_STRIP = YES;
402 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
403 | ENABLE_NS_ASSERTIONS = NO;
404 | GCC_C_LANGUAGE_STANDARD = gnu99;
405 | GCC_ENABLE_OBJC_EXCEPTIONS = YES;
406 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
407 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
408 | GCC_WARN_UNDECLARED_SELECTOR = YES;
409 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
410 | GCC_WARN_UNUSED_FUNCTION = YES;
411 | GCC_WARN_UNUSED_VARIABLE = YES;
412 | MACOSX_DEPLOYMENT_TARGET = 10.9;
413 | SDKROOT = macosx;
414 | };
415 | name = Release;
416 | };
417 | CC2996E41913A7150039CE21 /* Debug */ = {
418 | isa = XCBuildConfiguration;
419 | buildSettings = {
420 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
421 | COMBINE_HIDPI_IMAGES = YES;
422 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
423 | GCC_PREFIX_HEADER = "BonjourMac/BonjourMac-Prefix.pch";
424 | INFOPLIST_FILE = "BonjourMac/BonjourMac-Info.plist";
425 | PRODUCT_NAME = "$(TARGET_NAME)";
426 | WRAPPER_EXTENSION = app;
427 | };
428 | name = Debug;
429 | };
430 | CC2996E51913A7150039CE21 /* Release */ = {
431 | isa = XCBuildConfiguration;
432 | buildSettings = {
433 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
434 | COMBINE_HIDPI_IMAGES = YES;
435 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
436 | GCC_PREFIX_HEADER = "BonjourMac/BonjourMac-Prefix.pch";
437 | INFOPLIST_FILE = "BonjourMac/BonjourMac-Info.plist";
438 | PRODUCT_NAME = "$(TARGET_NAME)";
439 | WRAPPER_EXTENSION = app;
440 | };
441 | name = Release;
442 | };
443 | CC2996E71913A7150039CE21 /* Debug */ = {
444 | isa = XCBuildConfiguration;
445 | buildSettings = {
446 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/BonjourMac.app/Contents/MacOS/BonjourMac";
447 | COMBINE_HIDPI_IMAGES = YES;
448 | FRAMEWORK_SEARCH_PATHS = (
449 | "$(DEVELOPER_FRAMEWORKS_DIR)",
450 | "$(inherited)",
451 | );
452 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
453 | GCC_PREFIX_HEADER = "BonjourMac/BonjourMac-Prefix.pch";
454 | GCC_PREPROCESSOR_DEFINITIONS = (
455 | "DEBUG=1",
456 | "$(inherited)",
457 | );
458 | INFOPLIST_FILE = "BonjourMacTests/BonjourMacTests-Info.plist";
459 | PRODUCT_NAME = "$(TARGET_NAME)";
460 | TEST_HOST = "$(BUNDLE_LOADER)";
461 | WRAPPER_EXTENSION = xctest;
462 | };
463 | name = Debug;
464 | };
465 | CC2996E81913A7150039CE21 /* Release */ = {
466 | isa = XCBuildConfiguration;
467 | buildSettings = {
468 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/BonjourMac.app/Contents/MacOS/BonjourMac";
469 | COMBINE_HIDPI_IMAGES = YES;
470 | FRAMEWORK_SEARCH_PATHS = (
471 | "$(DEVELOPER_FRAMEWORKS_DIR)",
472 | "$(inherited)",
473 | );
474 | GCC_PRECOMPILE_PREFIX_HEADER = YES;
475 | GCC_PREFIX_HEADER = "BonjourMac/BonjourMac-Prefix.pch";
476 | INFOPLIST_FILE = "BonjourMacTests/BonjourMacTests-Info.plist";
477 | PRODUCT_NAME = "$(TARGET_NAME)";
478 | TEST_HOST = "$(BUNDLE_LOADER)";
479 | WRAPPER_EXTENSION = xctest;
480 | };
481 | name = Release;
482 | };
483 | /* End XCBuildConfiguration section */
484 |
485 | /* Begin XCConfigurationList section */
486 | CC2996AD1913A7150039CE21 /* Build configuration list for PBXProject "BonjourMac" */ = {
487 | isa = XCConfigurationList;
488 | buildConfigurations = (
489 | CC2996E11913A7150039CE21 /* Debug */,
490 | CC2996E21913A7150039CE21 /* Release */,
491 | );
492 | defaultConfigurationIsVisible = 0;
493 | defaultConfigurationName = Release;
494 | };
495 | CC2996E31913A7150039CE21 /* Build configuration list for PBXNativeTarget "BonjourMac" */ = {
496 | isa = XCConfigurationList;
497 | buildConfigurations = (
498 | CC2996E41913A7150039CE21 /* Debug */,
499 | CC2996E51913A7150039CE21 /* Release */,
500 | );
501 | defaultConfigurationIsVisible = 0;
502 | defaultConfigurationName = Release;
503 | };
504 | CC2996E61913A7150039CE21 /* Build configuration list for PBXNativeTarget "BonjourMacTests" */ = {
505 | isa = XCConfigurationList;
506 | buildConfigurations = (
507 | CC2996E71913A7150039CE21 /* Debug */,
508 | CC2996E81913A7150039CE21 /* Release */,
509 | );
510 | defaultConfigurationIsVisible = 0;
511 | defaultConfigurationName = Release;
512 | };
513 | /* End XCConfigurationList section */
514 | };
515 | rootObject = CC2996AA1913A7150039CE21 /* Project object */;
516 | }
517 |
--------------------------------------------------------------------------------
/BonjourMac/BonjourMac/Base.lproj/MainMenu.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
669 |
670 |
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 |
680 |
681 |
--------------------------------------------------------------------------------