0
내 서버가 클라이언트가 보낸 연결 요청을 수락하지 않고 클라이언트가 아무 것도 수신하지 않습니다. 클라이언트가 내 서버를 요청할 때 서버가 다운됩니다. 다음과 같이 내 코드는 다음과 같습니다 서버 코드 :클라이언트가 연결을 요청할 때 서버가 연결을 허용하지 않습니다.
*#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<sys/types.h>
#include<string.h>
int main()
{
int sock,bnd,con,lis,size,clilen;
char *msg="WELCOME!!!!!";
struct sockaddr_in sockadd,cliadd;
//Socket Created.....
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock!=-1)
printf("socket created");
else
printf("Not created");
// defining Address of sockets
sockadd.sin_family=AF_INET;
sockadd.sin_port=htons(5001);
sockadd.sin_addr.s_addr=htonl(INADDR_ANY);
bnd=bind(sock,(struct sockaddr *) &sockadd,sizeof(sockadd));
if(bnd==-1)
printf("NOT BOUND");
else
printf("BOUND");
lis=listen(sock,10);
if(lis!=-1)
printf("listning");
else
printf("not listening");
printf("\nWaiting for connection at %s port no %d\n",inet_ntoa(sockadd.sin_addr),ntohs(sockadd.sin_port));
while(1)
{
clilen=sizeof(cliadd);
con=accept(sock,(struct sockaddr *) &cliadd, &clilen);
if(con==-1)
printf("connected not");
else
printf("conneted");
size=send(sock,msg,sizeof(msg),0);
if(size==-1)
printf("not sent");
else
printf("BYTES SENT: %d",size);
close(con);
sleep(2);
}
return(0);*
및 클라이언트 코드는 다음과 같습니다
int sock,bnd,con,lis,size;
char msg[35];
struct sockaddr_in sockadd;
//Socket Created.....
sock=socket(AF_INET,SOCK_STREAM,0);
if(sock!=-1)
printf("socket created");
else
printf("Not created");
//return(0);
// defining Address of sockets
sockadd.sin_family=AF_INET;
sockadd.sin_port=htons(5001);
sockadd.sin_addr.s_addr=inet_addr("10.3.5.172");
/*puts(sockadd.sin_family);
puts(sockadd.sin_port);
puts(sockadd.sin_addr.s_addr);
if(inet_pton(AF_INET, argv[1], &sockadd.sin_addr)<=0)
{
printf("\n inet_pton error occured\n");
return 1;
} */
con=connect(sock, (struct sockaddr *)&sockadd, sizeof(sockadd)) ;
if(con==-1)
{
printf("\n Error : Connect Failed \n");
return 1;
}
else
printf("successful");
size=recv(sock,msg,sizeof(msg),0);
printf("msg recieved:%s",msg);
printf("bytes recieved:%d",size);
}*
확인을 보인다. localhost에서 연결할 수 있습니까? 'tcpdump'를하고 누군가가 여러분을 걸러 내는지 알아낼 수 있습니까? – cnicutar
서버가 실행되고 연결을 기다리지 만 클라이언트가 n 요청을 실행하면 서버가 종료됩니다. – user3032010
이 코드는 엉망입니다 - 오류가 있더라도 실행을 계속하는 곳이 있습니다. 서버가 잘못된 소켓 설명자를 사용하여 전송합니다. 서식을 지정하면 읽기가 어려워집니다. –