- This topic has 5개 답변, 2명 참여, and was last updated 10 years, 7 months 전에 by 과자도둑. This post has been viewed 833 times
-
-
리눅스에서 서버쪽 소켓프로그래밍중인데
컴파일하면 에러는안뜨는데 작동을안합니다.
즉 메인함수의 테스트출력 print문조차도 출력이안되요.
대체 어디가 문제인걸까요?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>#define BUF_SIZE 1024
void error_handling(char *message);int main()
{printf("작동 테스트");
int serv_sock, clnt_sock;
char message[BUF_SIZE];
int str_len, i;struct sockaddr_in serv_adr;
struct sockaddr_in clnt_adr;
socklen_t clnt_adr_sz;int port = 5000; // 서버 포트번호
// 소켓 생성
serv_sock=socket(PF_INET, SOCK_STREAM, 0);
if(serv_sock==-1)
error_handling("socket() error");memset(&serv_adr, 0, sizeof(serv_adr));
serv_adr.sin_family=AF_INET;
serv_adr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_adr.sin_port=htons(port);if(bind(serv_sock, (struct sockaddr*)&serv_adr, sizeof(serv_adr))==-1)
error_handling("bind() error");if(listen(serv_sock, 5)==-1)
error_handling("listen() error");clnt_adr_sz=sizeof(clnt_adr);
printf("클라이언트의 접속을 기다리는중...");
for(i=0; i<5; i++)
{
clnt_sock=accept(serv_sock, (struct sockaddr*)&clnt_adr, &clnt_adr_sz);
if(clnt_sock==-1)
error_handling("accept() error");
else
printf("Connected client %d \n", i+1); // 클라이언트 접속 알림while((str_len=read(clnt_sock, message, BUF_SIZE))!=0)
{
printf("클라이언트로부터 받은 메시지 : %s\n", message);
}close(clnt_sock);
}close(serv_sock);
return 0;
}void error_handling(char *message)
{
fputs(message, stderr);
fputc('\n', stderr);
exit(1);
}
- 답변은 로그인 후 가능합니다.