2011-04-27 2 views
-2

히 내가 소켓 프로그래밍 초보자입니다 모든클라이언트 서버 소켓 프로그래밍

..

나는 두 개의 프로그램이 있었다. 수신 및 수신 확인.

RECEIVE에서는 resvfrom (.....)을 사용하여 서버로 작동하는 프로그램에서 데이터를 수신하기위한 코드를 작성하고 나중에는 서버로 작동하는 프로그램에서 일부 msg를 수신하기위한 코드를 작성했습니다 resvfrom (.....) sendto (...)를 사용하여 서버 프로그램으로 동일한 데이터를 보내고 있습니다.

나는 내 프로그램이 잘 실행되고 4545

멀티 캐스트 주소 224.0.0.5 포트와 리눅스 시스템을 사용하고 있지만, 문제는 즉 :

첫 번째 프로그램은 다음 데이터 내 SENDRECEIVE 프로그램을 수신 RECEIVE의 나 데이터 수신 및 전송.

하지만 그 코드는 무한합니다 ..... 내 코드를 while (1) {.......}로 묶었습니다.

지금 prob 무엇입니까 ???

내 가까운 (.....) 소켓이 SENDRECEIVE 프로그램에 대해 호출되지 않았습니까?

그렇다면 난 내 소켓

"나는이 시간 전체 코드를 전송 질수있는 조건이 서버에서 MSG를 수신하고 프로그램을 수신하기 위해 다시 전송 한 후 종료 할 수 있도록 ..... 사용하여 종료하는 방법 그러나 논리는

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); {... .. . 
} 
} 

은 u는 가능한 한 빨리 으로 저를 도와주세요 것 setsocketopt (.....) 후 ...입니다 ... "

+3

그 슬랩은 실제로 따르기가 어렵습니다 ... – forsvarir

+0

그래서 문제는 while 루프를 벗어나는 방법을 모르는 것입니까? 코드를 게시 할 수 있습니까? – forsvarir

+0

@ user726750에 오신 것을 환영합니다! FAQ : http://stackoverflow.com/faq 및 How to ask 섹션 : http://stackoverflow.com/questions/how-to-ask를 읽고 질문을 정리하십시오. 또한 질문 서식을 지정하는 데 도움이 필요하면 서식 섹션을 참조하십시오. http://stackoverflow.com/editing-help – JohnP

답변

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 루프가 필요합니까?