C 客户机-服务器套接字编程
大家好 我是套接字编程的新手 我有两个节目。接收和发送接收 在RECEIVE中,我只编写了使用resvfrom(…)从充当服务器的程序接收数据的代码,在后面的一个代码中,我编写了使用resvfrom(…)从充当服务器的程序接收一些消息的代码,并且我使用sendto(…)将相同的数据发送回该服务器程序 我使用的是多播地址为224.0.0.5、端口为4545的linux机器 我的程序运行良好,但问题是: 首先,我的接收程序正在接收数据 然后我的SENDRECEIVE程序接收和发送数据 但它在内部运行…..我将代码包含在while(1){……}中 现在有什么问题 Is my close(…)未为SENDRECEIVE程序调用套接字 如果是,我将如何使用哪些条件关闭套接字,以便在从服务器接收消息并将其发送回接收程序后终止 “这次我无法发送全部代码,但逻辑是……在setsocketopt(……)之后 请你尽快帮我好吗C 客户机-服务器套接字编程,c,linux,sockets,udp,multicastsocket,C,Linux,Sockets,Udp,Multicastsocket,大家好 我是套接字编程的新手 我有两个节目。接收和发送接收 在RECEIVE中,我只编写了使用resvfrom(…)从充当服务器的程序接收数据的代码,在后面的一个代码中,我编写了使用resvfrom(…)从充当服务器的程序接收一些消息的代码,并且我使用sendto(…)将相同的数据发送回该服务器程序 我使用的是多播地址为224.0.0.5、端口为4545的linux机器 我的程序运行良好,但问题是: 首先,我的接收程序正在接收数据 然后我的SENDRECEIVE程序接收和发送数据 但它在内部运行
可能…这不是一个真正的答案,但我正试图更好地理解这个问题。。。据我所知,你有这样一个循环:
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);
{... .. . }