Socket 问题

osbornZ 2013-04-01 04:42:12
socket = CFSocketCreate(kCFAllocatorDefault , PF_INET , SOCK_STREAM ,IPPROTO_TCP , kCFSocketNoCallBack, nil, NULL);
if ( NULL == socket )
{
NSLog(@"无法生成连接");
return ;
}

//int n =1 ;

struct sockaddr_in addr4;
memset( &addr4 , 0, sizeof(addr4) );
addr4.sin_len = sizeof(addr4);
addr4.sin_family = AF_INET ;
addr4.sin_port = htons(1200);
addr4.sin_addr.s_addr = inet_addr([@"192.168.1.188" UTF8String ] );

CFDataRef address= CFDataCreate(kCFAllocatorDefault, (UInt8 *)&addr4, sizeof(addr4));

if ( NULL == address )
{
CFSocketInvalidate(socket);
CFRelease(socket);
NSLog(@"无法生成地址");
return ;
}


//可以进行非阻塞设置,select 设置超时
if (CFSocketConnectToAddress(socket, address, 2) != kCFSocketSuccess)
{
CFSocketInvalidate(socket);
CFRelease(socket);
CFRelease(address);
NSLog(@"无法连接设备");
return ;
}

CFRelease(address);



int length = 0;
char buffer[32];
buffer[0] = 03 ;
buffer[1] = 50; //16
buffer[2] = 00;
strcpy(buffer +3 ,"/mnt/disk/config");

length = strlen("/mnt/disk/config") ;
buffer[ length+3 ] = 8; //
buffer[ length+4 ] = 00 ;

strcpy(buffer+length+5, "test.txt");


send(CFSocketGetNative(socket ), buffer, 29, 0 );


int16_t fileCount = -1;

char str[100] ;
memset(str, 0, sizeof(str) );

fd_set rd;
struct timeval tv;
tv.tv_sec = 0;
tv.tv_usec = 200000 ;
FD_ZERO(&rd);
FD_SET(CFSocketGetNative(socket), &rd );

// int flag = fcntl(CFSocketGetNative(socket), F_GETFL , 0) ;
// fcntl( CFSocketGetNative(socket), F_SETFL, flag |O_NONBLOCK); //设置异步方式

int retval = select( CFSocketGetNative(socket)+1, &rd , NULL , NULL , &tv ) ;

每次得到的 retval 值 都是 0 ,求大神 指导、
...全文
380 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
osbornZ 2013-04-02
  • 打赏
  • 举报
回复
唉,为了测试 阻塞 ,数据包 搞错了、、、

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧