내 로컬 호스트의 Ubuntu 11.04에서 TCP 에코 서버 및 클라이언트 프로그램을 구현하려고합니다. 그러나 바인딩 기능에 문제가 있습니다. 여기 내 코드입니다.TCP 에코 서버의 바인드 오류
tcpserver는
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
struct sockaddr_in serv_addr,cli_addr;
int listenfd,r,w,connfd,val,cli_addr_len;
unsigned short serv_port=30000;
char serv_ip[]="127.0.0.1";
char rbuff[128];
char sbuff[128];
int main()
{
bzero(&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(serv_port);
inet_aton(serv_ip,(&serv_addr.sin_addr));
printf("\nTcp Echo server.\n");
//creating socket
if(listenfd=socket(AF_INET,SOCK_STREAM,0)<0)
{
printf("\nServer Error:Cannot create socket.\n");
exit(1);
}
if(bind(listenfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nServer Error:cannot Bind.\n");
close(listenfd);
exit(1);
}
if((listen(listenfd,5))<0)
{
printf("\nServer Error:Cannot listen.\n");
close(listenfd);
exit(1);
}
cli_addr_len=sizeof(cli_addr);
for(;;)
{
printf("\nServer:listening for clients.... Press Control +C to stpo echo server :\n");
if((connfd=accept(listenfd,(struct sockaddr*)&cli_addr,&cli_addr_len))<0)
{
printf("\nServer Error:Cannot accept client connections.\n");
close(listenfd);
exit(1);
}
printf("\nServer:connection from client %s accepted.\n",inet_ntoa(cli_addr.sin_addr));
if((r=read(connfd,rbuff,128))<0)
printf("\nServer Error:Cannot receive message from client.\n");
else
{
rbuff[r]='\0';
if((w=write(connfd,rbuff,128))<0)
printf("\nServer Error:cannot send message to the client.\n");
else
printf("Echoed back %s to %s.\n",rbuff,inet_ntoa(cli_addr.sin_addr));
}
}
}
내가 바인딩 error..I 내가 오류 나 자신을 받고 도움을 필요로하고 있지 않다에만 있기 때문에 전체 코드를 업로드 무엇입니까 우분투에서 GCC로 컴파일 후.
사용을':
"="의 우선 순위는 다음과 같이 확인됩니다 프로그램, 수정, "<"보다 낮은 실패 경로에서 보통'printf'보다는 실제 오류 메시지를 출력하십시오. – Mat
나는 perror를 사용했으며 "소켓이없는 소켓 오류"라고 말했습니다. –