正在阅读:读书笔记:在局域网中实现多播功能读书笔记:在局域网中实现多播功能

2004-03-16 15:14 出处:CSDN 作者:hydnoahark 责任编辑:linjixiong

  //发送用户输入的数据到多播组
  sendto(server, sendline, strlen(sendline), 0, (sockaddr*)(&remote), sizeof(remote));
  }

  cout<<"do_send end..."<}

  void do_read(void* arg)
  {
  SOCKET server = (SOCKET)arg;

  char buf[BUFFER_SIZE+1];
  int ret;

  sockaddr_in client;
  int clientLen;

  for(;;) //一直读取知道主线程终止
  {
  clientLen = sizeof(client);
  memset(&client, 0, clientLen);

  ret = recvfrom(server, buf, BUFFER_SIZE, 0, (sockaddr*)(&clientLen), &clientLen);
  if ( ret == 0) //do_read在用户直接回车发送了一个空字符串
  {
  continue;
  }
  else if( ret == SOCKET_ERROR )
  {
  if( WSAGetLastError() == WSAEINTR ) //主线程终止recvfrom返回的错
  break;

  cout<<"Error in recvfrom: "< break ;
  }
  buf[ret] = '\0';
  cout<<"received: "< }

  cout<<"do_read end..."<}

  当然上面的代码如果应用到实际的程序中还需要作更多的工作,不过实现多播功能真的很简单,不是吗 :-)

  我只是刚刚才开始学习网络编程方面的东东,上面的代码如果你认为有什么问题,请直接发email给我。

  参考资料: 《Unix网络编程(第一卷) 套接口API和X/Open传输接口API》[美] W.Richard Stevens 著




察看评论详细内容 我要发表评论
作者笔名简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品