Вопрос по sockets, iphone, objective-c – Отправить сообщение «Hello World» через UDP с iPhone

4

Я новичок в цели C, и мне нужно отправить простое сообщение через UDP. Серверная часть работает, потому что она реализована в C #.

Код сервера в C #:

<code> var server = new UdpClient(8585);
 var groupEP = new IPEndPoint(IPAddress.Parse("192.168.0.120"),8585);
 byte[] bytes = server.Receive(ref groupEP);
</code>

и клиентская часть в C #:

<code>   System.Net.Sockets.UdpClient client;     
client = new System.Net.Sockets.UdpClient("192.168.0.120",8585);    
client.Send(new byte[]{1,2,3,4},4);
</code>

как я могу сделать ту же часть клиента в цели c? Я знаю, что в Интернете есть много учебных пособий, таких какэта библиотека, когда я импортирую эту библиотеку в свой проект, я не знаю, как создать новый объект. Я пытался:

<code> [[GCDAsyncUdpSocket alloc] initWithSocketQueue:... ??? I don't know how to initialize it.
</code>

Я буду признателен, если кто-нибудь покажет мне простой пример того, как я могу воспроизвести клиентскую часть в задаче c.

здесь вы найдете ответ:stackoverflow.com/questions/1176273/… endo.anaconda

Ваш Ответ

4   ответа
6

скачать GCDAsyncUdpSocket сВот, тогда вы можете отправлять пакеты как:

 GCDAsyncUdpSocket *udpSocket ; // create this first part as a global variable
 udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];

 NSData *data = [ 
                   [NSString stringWithFormat:@"%Hello Wold" 
                    dataUsingEncoding:NSUTF8StringEncoding
                ];

[udpSocket sendData:data toHost:@"192.168.10.111" port:550 withTimeout:-1 tag:1];
проект уже переехал на Githubgithub.com/robbiehanson/CocoaAsyncSocket
Что делать, если IP-адрес меняется
0

Сначала прочитайтеэтой статьи в котором изложены некоторые из основных типов сетевых коммуникаций, доступных в iOS.

В частности, у Apple есть пример сетевого взаимодействия с использованием сокетов иNSStream учебный классВот.

Выcan используйте обычный API сокетов BSD, но это не рекомендуется, поскольку они не работают с некоторыми сетевыми функциями iOS, такими как VPN по требованию. Если это не имеет значения, то вы можете проверитьВот для примеров того, как использовать сокеты в C.

Исходя из личного опыта, это не так просто, как то, что вы получили в C #.

0

Мне удается решить проблему, используя monotouch. Я просто делаю это так же, как я делаю это в c #:

 System.Net.Sockets.UdpClient client;
 client = new System.Net.Sockets.UdpClient("192.168.0.120",550);
 client.Send(new byte[]{1,2,3,4},4);

Я не хочу платить за лицензию. это будет стоить 400 долларов. Если бы у меня было более 3 строк кода, я мог бы подумать об этом.

1

Apple предоставляет пример проекта под названиемUDPEcho, Несмотря на то, что это проект Mac, он опирается главным образом на классы из Core Foundation, который также доступен для iOS, и содержащиеся в нем уроки должны в равной степени относиться к iOS.

Это именно то, что мне было нужно. Он отлично работает, когда я запускаю проект Mac. Когда я копирую те же библиотеки и вызываю тот же метод, он не работает на iPhone. Я не получаю никаких ошибок, хотя. Может быть, я что-то не так делаю или это просто работает на Mac? Tono Nam

Похожие вопросы