Сокет-сервер iPhone / IP / клиентская программа

Я прочитал много вопросов по этому вопросу на этом сайте, но они не ответили на мой вопрос. Если вы не можете быть ### о моей цели или истории, перейдите к вопросу.

Моя цель

Это создание сервера, который может работать на Mac OS X 10.4+ и более поздних версиях, перенести его на Windows XP / Vista (пока не знаю, как это сделать, но это проблема на потом).

Затем пусть iPhone будет клиентом, который может видеть имена компьютеров, на которых запущен сервер (через WiFi). Затем пользователь iPhone может выбрать имя компьютера для подключения к серверу на этом компьютере.

После этого они могут отправлять простые текстовые сообщения друг другу. Например, iPhone отправляет «Knock Knock», а сервер отвечает «Кто там?». Или простой клиент: «Ping», сервер отвечает «Pong», все будет в порядке.

Фон

В прошлом я работал с сокетами, но только в Visual Basic 6 с WINSOCKET.dll было очень легко создать сервер TCP / IP.

server.host = localhost;
server.port = 12203;
server.listen(); 

С клиентом мне нужно было только сделать следующее для подключения.

client.connect(localhost, 12203);

Было доступно несколько обратных вызовов, таких как connect, close, dataArrival и т. Д., Которые я мог использовать, чтобы делать все, что захочу.

Возможно, для iPhone есть библиотеки, написанные для него, но так ли сложно создать это простое приложение самостоятельно? Проведя некоторые исследования, я понимаю, что я должен смотреть в области CFNetwork, CFHost, CFSocket, CFStream.

Вопрос

Есть ли кто-нибудь, кто мог бы направить меня к учебнику или опубликовать код, где у вас есть две кнопки на iPhone. [Start Server] и [Connect to Server], где первый запускает сервер TCP / IP на определенном порту, а второй подключается к нему.

После того, как соединение было установлено, может также быть код для отправки простого сообщения «Ping» на сервер после того, как сервер получит это, ответит клиенту сообщением «Pong».

Это было бы действительно полезно. Но, может быть, я прошу многое здесь.

Ответы на вопрос(3)

Ваш ответ на вопрос