UDP链接建立、关闭

//建立UDP链接

-(void)openUDP

{

//    [self closeUDP];

   heartData = [[NSMutableDataalloc]init];

    heartStr = [[NSMutableStringalloc]init];

    

    udpSocket = [[[AsyncUdpSocketalloc]initWithDelegate:self]retain];

   NSError *error =nil;

   BOOL flagBind = [udpSocketbindToPort:UDPPorterror:&error];

  

    [udpSocketenableBroadcast:YESerror:&error];


    

   if (error)

    {

       NSLog(@"绑定错误error=:%@",error);

    }

    //3秒发送一次数据

    hearbeartTimer = [[NSTimerscheduledTimerWithTimeInterval:3target:selfselector:@selector(sendeUDPHeart:)userInfo:@"testHeart"repeats:YES]retain];

    [hearbeartTimerfire];

    [udpSocketreceiveWithTimeout:-1tag:1];


}


-(void)sendeUDPHeart:(id)sender

{

    [udpSocketsendData:@"服务器需要的数据id等信息" dataUsingEncoding:NSUTF8StringEncoding]

              toHost:@"123.123.132.12"

               port:1234

        withTimeout:-1tag:123];

    

}


//关闭UDP 连接

-(void)closeUDP

{

    if (udpSocket)

    {

        udpSocket.delegate =nil;

        [udpSocketclose];

        [udpSocketrelease];

        udpSocket =nil;

    }

    

    if (hearbeartTimer)

    {

        [hearbeartTimerinvalidate];

        [hearbeartTimerrelease];

        hearbeartTimer=nil;

    }

    

}

- (BOOL)onUdpSocket:(AsyncUdpSocket *)sock didReceiveData:(NSData *)data withTag:(long)tag fromHost:(NSString *)host port:(UInt16)port

{

//成功后建立TCP连接

    return YES;

}



-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotReceiveDataWithTag:(long)tag dueToError:(NSError *)error

{

    

   NSLog(@"Message not received for error: %@", error);

    

}


-(void)onUdpSocket:(AsyncUdpSocket *)sock didNotSendDataWithTag:(long)tag dueToError:(NSError *)error

{

    

    NSLog(@"Message not send for error: %@",error);

    

}


-(void)onUdpSocket:(AsyncUdpSocket *)sock didSendDataWithTag:(long)tag

{

    

    NSLog(@"Message send success!");

    

}


-(void)onUdpSocketDidClose:(AsyncUdpSocket *)sock

{

    

    NSLog(@"socket closed!");

    

}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Python UDP链接示例,它创建了一个UDP客户端和服务器,并使用它们之间的套接字进行通信。 UDP服务器: ```python import socket # 创建UDP套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 绑定IP地址和端口号 udp_socket.bind(('localhost', 8000)) # 接收并处理客户端请求 while True: # 接收数据 data, addr = udp_socket.recvfrom(1024) print('Received from client: %s' % data.decode()) # 发送响应数据 udp_socket.sendto(b'Hello, client!', addr) ``` UDP客户端: ```python import socket # 创建UDP套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 发送请求数据 udp_socket.sendto(b'Hello, server!', ('localhost', 8000)) # 接收响应数据 data, addr = udp_socket.recvfrom(1024) print('Received from server: %s' % data.decode()) # 关闭套接字 udp_socket.close() ``` 在这个示例中,UDP服务器绑定到本地8000端口,并在一个无限循环中接收客户端请求。当服务器接收到客户端的请求时,它会发送一个响应,然后继续等待下一个请求。 UDP客户端发送一个请求到服务器,并等待服务器的响应。一旦客户端接收到服务器的响应,它会输出响应数据并关闭套接字。 请注意,在UDP通信中,没有连接建立过程。客户端和服务器之间仅仅是通过套接字进行通信。因此,客户端和服务器之间的通信是无状态的,这意味着它们不会保持任何关于对方的信息。这也是UDP比TCP更快但不可靠的原因之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值