-(void) sendStartCmd:(int)newValue{    

    sockfd =socket(AF_INET,SOCK_DGRAM,0);
    if(sockfd <0) {
        NSLog(@"creat client socket fail\n");
        return;
    }
    structsockaddr_in servaddr;
    
    bzero(&servaddr,sizeof(servaddr));
   // servaddr.sin_family = AF_INET;
    servaddr.sin_port =htons(5131);
    servaddr.sin_addr.s_addr =inet_addr("192.168.1.100");
    char sendline[10]={'\0','\0'} ;
    sprintf(sendline,"%d",newValue);
   // sendto(sockfd, sendline, 10, 0, (struct sockaddr *)&servaddr, sizeof(servaddr));
    
    
    char buffer[256] =" 000";
    bzero(buffer,sizeof(buffer));
    sprintf(buffer,"%s","000");

    int len =sendto(sockfd, buffer,sizeof(buffer),0, (structsockaddr *)&servaddr,sizeof(servaddr));
    
    if (len >0) {
        NSLog(@"发送成功");
    } else {
        fprintf(stderr,"发送失败 failed: %d %s\n",errno,strerror(errno));
    }
    
    av_log(NULL,AV_LOG_ERROR,"send info-> %d length:%d \n",newValue,strlen(sendline));
    close(sockfd);
}

发送失败 failed: 65 No route to host


iPhone设置网络权限:

iphone6s 上每个app有网络权限控制,在设置最下面的列表里面,选中一个app,右键头里面有选择app的网络权限。

ios踩过的坑:

app需要上网的话,启动时候最好弹出框提示用户添加网络权限。

从iOS10之前带过来的应用应该不会发生类似问题。在iOS10下新下载的应用,有的时候首次打开,会提示网络使用权限,但是有的时候,没有提示就直接可以使用了。并不是这样就没问题了,接下来才是最蛋疼的。有部分概率在下次打开的时候网络权限直接默认禁掉了。

解决方法:

我想到的也是比较傻白甜的方法。查阅了系统api,并没有找到网络权限申请的方法。于是想到了跳转到自己应用下去设置权限。

[[UIApplicationsharedApplication]openURL:[NSURLURLWithString:UIApplicationOpenSettingsURLString]];

不过这个时候又出现另外一个蛋疼的bug。应用不会显示在系统设置的列表中。换句话说,你没有机会去更改他的网络权限。由于不存在于设置列表中,所以执行上面那段代码铁定是崩溃的。

接下来就是解决这个问题了,尝试了各种方法试着让他出现在系统设置列表中。尝试结果发现,当应用请求任何一种系统权限(例如通知,麦克风,定位等)的时候,他会出现在系统列表中。接下来再去执行上面的跳转代码设置应用的网络权限。

权限以及相关设置

我们需要打开info.plist文件添加相应权限的说明,否则程序在iOS10上会出现崩溃。
具体如下图:




android设备上能设置udp的超时时间吗_地理位置

QQ20160914-0.png


注意,添加的时候,末尾不要有空格
麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?

语音转文字权限:Privacy - Speech Recognition Usage Description 是否允许此App使用语音识别?
日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?

定位权限:Privacy - Location When In Use Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
定位权限: Privacy - Location Always Usage Description 我们需要通过您的地理位置信息获取您周边的相关数据
定位的需要这么写,防止上架被拒。

<!-- 相册 --> 
 <key>NSPhotoLibraryUsageDescription</key> 
 <string>App需要您的同意,才能访问相册</string> 
 <!-- 相机 --> 
 <key>NSCameraUsageDescription</key> 
 <string>App需要您的同意,才能访问相机</string> 
 <!-- 麦克风 --> 
 <key>NSMicrophoneUsageDescription</key> 
 <string>App需要您的同意,才能访问麦克风</string> 
 <!-- 位置 --> 
 <key>NSLocationUsageDescription</key> 
 <string>App需要您的同意,才能访问位置</string> 
 <!-- 在使用期间访问位置 --> 
 <key>NSLocationWhenInUseUsageDescription</key> 
 <string>App需要您的同意,才能在使用期间访问位置</string> 
 <!-- 始终访问位置 --> 
 <key>NSLocationAlwaysUsageDescription</key> 
 <string>App需要您的同意,才能始终访问位置</string> 
 <!-- 日历 --> 
 <key>NSCalendarsUsageDescription</key> 
 <string>App需要您的同意,才能访问日历</string> 
 <!-- 提醒事项 --> 
 <key>NSRemindersUsageDescription</key> 
 <string>App需要您的同意,才能访问提醒事项</string> 
 <!-- 运动与健身 --> 
 <key>NSMotionUsageDescription</key> <string>App需要您的同意,才能访问运动与健身</string> 
 <!-- 健康更新 --> 
 <key>NSHealthUpdateUsageDescription</key> 
 <string>App需要您的同意,才能访问健康更新 </string> 
 <!-- 健康分享 --> 
 <key>NSHealthShareUsageDescription</key> 
 <string>App需要您的同意,才能访问健康分享</string> 
 <!-- 蓝牙 --> 
 <key>NSBluetoothPeripheralUsageDescription</key> 
 <string>App需要您的同意,才能访问蓝牙</string> 
 <!-- 媒体资料库 --> 
 <key>NSAppleMusicUsageDescription</key> 
 <string>App需要您的同意,才能访问媒体资料库</string>

iOS9 HTTP 不能正常使用的解决办法

Xcode 7.0 bata发现网络访问失败。

输出错误信息

The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

App Transport Security (ATS)。详情:App Transport Security (ATS)HTTPS协议。

但是现在公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS协议传输。

最终找到以下解决办法:

  1. 在Info.plist中添加

NSAppTransportSecurity

  1. 类型

Dictionary

NSAppTransportSecurity

  1. 下添加

NSAllowsArbitraryLoads

  1. 类型

Boolean

  1. ,值设为

YES