送我使用這個庫:https://github.com/robbiehanson/CocoaAsyncSocketUDP數據包沒有在iPhone上
我的測試代碼:
#import <UIKit/UIKit.h>
@class GCDAsyncUdpSocket;
@interface ThirdViewController : UIViewController
{
GCDAsyncUdpSocket *udpSocket;
}
.M:
#import "ThirdViewController.h"
#import "DDLog.h"
#import "DDTTYLogger.h"
#import "GCDAsyncUdpSocket.h"
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
@implementation ThirdViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
udpSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:dispatch_get_main_queue()];
[udpSocket bindToPort:7744 error:nil];
[udpSocket beginReceiving:nil];
[udpSocket enableBroadcast:YES error:nil];
//[udpSocket connectToHost:@"127.0.0.1" onPort:55544 error:nil];
NSData *data = [@"test" dataUsingEncoding:NSUTF8StringEncoding];
//[udpSocket sendData:data withTimeout:-1 tag:0];
[udpSocket sendData:data toHost:@"127.0.0.1" port:55544 withTimeout:-1 tag:0];
}
但不發送包。我使用這個數據包嗅探器:http://sourceforge.net/projects/packetpeeper/
在庫中有一個客戶端(Mac)的例子,我看到他的包。我試圖在真實設備上運行應用程序,但也沒有發送任何內容(地址當然是另一個)。問題是什麼?
感謝您的回答!我改變了監聽端口的傳輸方式。我試圖發送eth1,並且我沒有看到該包。從我看到的mac應用程序發送的數據包,即使地址是127.0.0.1 – ifau 2012-03-25 16:23:04
您如何確定要使用的'toHost'地址?您是否輸入了屏幕上的iDevice的IP地址,因爲除非您使用廣播地址,否則這是您必須使用的地址 - 如果您的桌面在192.168.1.5上,則廣播地址爲192.168。 1.255'。您可以從「網絡參數窗格」中確定您的桌面的IP地址。 – Petesh 2012-03-25 21:50:38
我的電腦連接到路由器,地址爲'192.168.10.101'。當我嘗試從iDevice發送數據包時,我選擇這個地址作爲'toHost'。 IDevice的地址爲'192.168.10.102'。當我嘗試從模擬器發送時,我選擇地址「127.0.0.1」。我也嘗試選擇'192.168.10.101'。 enableBroadcast我設置爲'NO'。 – ifau 2012-03-26 06:59:08