客户端服务器socket编程

客户端服务器socket编程

问题描述:

斐伊川所有客户端服务器socket编程

我在socket编程新手..

我有两个方案。 RECEIVE和SENDRECEIVE。

在RECEIVE中,我简单地编写了代码,用于从使用resvfrom(.....)的充当服务器的程序接收数据,并且在稍后的代码中,我编写了用于从充当服务器的程序接收某些消息的代码resvfrom(.....)我也发送相同的数据回到该服务器程序使用sendto(......)。

我使用Linux机器与多播地址224.0.0.5和端口4545

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

首先我接收节目接收数据 然后我SENDRECEIVE程序接收和发送数据。

但它运行infinety .....我在while(1){.......}中附上我的代码。

现在是什么概念?

是否为SENDRECEIVE程序调用了close(.....)套接字。

如果是的话我将如何使用关闭我的插座,条件,这样它会从服务器收到信息,并发送回接收节目后终止.....

“我不能这个时候发送整个代码但逻辑是... 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); {... .. . 
} 
} 

将ü请尽快 可以帮我......之后”

+3

这块文字真的很难遵循... – forsvarir 2011-04-27 07:48:45

+0

所以问题是你不知道如何摆脱while循环?你可以发布你的任何代码吗? – forsvarir 2011-04-27 07:51:22

+0

@ user726750欢迎来到SO!请阅读常见问题解答:http://*.com/faq和如何问部分:http://*.com/questions/how-to-ask,这样你就可以清理你的问题。另请参阅格式部分,如果您需要格式化您的问题的帮助:http://*.com/editing-help – JohnP 2011-04-27 07:53:01

这是不是一个真正的答案,但我试图更好地理解这个问题......从什么我可以告诉你有一个循环是这样的:

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