客户端服务器socket编程

时间:2011-04-27 07:46:19

标签: c linux sockets udp multicastsocket

Hii all

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

我有两个节目。接收和退出。

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

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

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

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

但是它运行得很麻烦......我把代码包含在while(1){.......}中。

现在问题是什么????

我的close(.....)套接字是不是为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);  {... .. .
}  
}
请你尽快帮助我      可能的...“

1 个答案:

答案 0 :(得分: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循环呢?