Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 客户机-服务器套接字编程_C_Linux_Sockets_Udp_Multicastsocket - Fatal编程技术网

C 客户机-服务器套接字编程

C 客户机-服务器套接字编程,c,linux,sockets,udp,multicastsocket,C,Linux,Sockets,Udp,Multicastsocket,大家好 我是套接字编程的新手 我有两个节目。接收和发送接收 在RECEIVE中,我只编写了使用resvfrom(…)从充当服务器的程序接收数据的代码,在后面的一个代码中,我编写了使用resvfrom(…)从充当服务器的程序接收一些消息的代码,并且我使用sendto(…)将相同的数据发送回该服务器程序 我使用的是多播地址为224.0.0.5、端口为4545的linux机器 我的程序运行良好,但问题是: 首先,我的接收程序正在接收数据 然后我的SENDRECEIVE程序接收和发送数据 但它在内部运行

大家好

我是套接字编程的新手

我有两个节目。接收和发送接收

在RECEIVE中,我只编写了使用resvfrom(…)从充当服务器的程序接收数据的代码,在后面的一个代码中,我编写了使用resvfrom(…)从充当服务器的程序接收一些消息的代码,并且我使用sendto(…)将相同的数据发送回该服务器程序

我使用的是多播地址为224.0.0.5、端口为4545的linux机器

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

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

但它在内部运行…..我将代码包含在while(1){……}中

现在有什么问题

Is my close(…)未为SENDRECEIVE程序调用套接字

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

“这次我无法发送全部代码,但逻辑是……在setsocketopt(……)之后

请你尽快帮我好吗
可能…

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

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循环?

那一段文字很难理解……所以问题是你不知道如何打破while循环?你能发布你的任何代码吗?@user726750欢迎使用SO!请阅读常见问题解答:和“如何提问”部分:以便您可以整理您的问题。另外,如果您需要格式化问题的帮助,请参阅格式化部分:谢谢您如此快速的回答…我这次无法发送全部代码,但逻辑是。。。设置socketopt(……)之后,而(1)//从服务器接收int status=resvfrom(sock、buffer、MAxBUFFERSIZE、0、(struct sockaddr)&addr和socklen);{………}//发送回服务器int count=sensto(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);
   {... .. . }