-2

大家好

我是套接字编程的新手..

我有两个程序。接收和发送接收。

在 RECEIVE 中,我只是编写了用于使用 resvfrom(.....) 从充当服务器的程序接收数据的代码,而在后面的代码中,我编写了用于从充当服务器的程序接收一些 msg 的代码,使用 resvfrom(.. ...)我也使用 sendto(......)将相同的数据发送回该服务器程序。

我正在使用多播地址为 224.0.0.5 和端口为 4545 的 linux 机器。

我的程序运行良好,但问题是:

首先我的 RECEIVE 程序正在接收数据,然后我的 SENDRECEIVE 程序接收和发送数据。

但它运行无穷......我将我的代码包含在 while(1){.......} 中。

现在问题是什么???

我的关闭(.....)套接字是否没有为 SENDRECEIVE 程序调用。

如果是,我将如何使用哪些条件关闭我的套接字,以便它在从服务器接收到消息并将其发送回 RECEIVE 程序后终止......

“这次我不能发送整个代码,但逻辑是……在 setsocketopt(.....)

while (1) 
//receiving from server  int
status=resvfrom(sock,buffer,MAxBUFFERSIZE,0,(struct
sockaddr )&addr,&socklen); {.....
{..... .. ..  }  //sending back to
server  int count=
sensto(sock,buffer,MAxBUFFERSIZE,0,(struct
sockaddr )&addr,&socklen);  {... .. .
}  
}

你能不能尽快帮帮我……”

4

1 回答 1

1

这不是一个真正的答案,但我试图更好地理解这个问题......据我所知,你有一个这样的循环:

while (1) //receiving from server 
{
   int status=recvfrom(sock,buffer,MAxBUFFERSIZE,0,(struct sockaddr )&addr,&socklen);
   {..... {..... .. .. } //sending back to server 
   int count= sendto(sock,buffer,MAxBUFFERSIZE,0,(struct sockaddr )&addr,&socklen);
   {... .. . }
}

您想在将响应发送到服务器后退出循环......为什么不能这样做:

   int status=recvfrom(sock,buffer,MAxBUFFERSIZE,0,(struct sockaddr )&addr,&socklen);
   {..... {..... .. .. } //sending back to server 
   int count= sendto(sock,buffer,MAxBUFFERSIZE,0,(struct sockaddr )&addr,&socklen);
   {... .. . }

为什么你需要while循环?

于 2011-04-27T10:42:30.217 回答