이것좀 알려주세요~~~ㅜㅠ
핑크빛애교
질문 제목 : 소켓 프로그래밍 서버부분 수정서버가 한번 실행되고 죽어서 계속 대기상태로 있게하려고 checkcmd라는 함수 만들고 이 안에서 while문돌리려고 하는데.. 잘 안돼요 ㅠ질문 내용 : 서버 소스 입니다~ 부탁드립니다~!!
#include stdio.h
#include winsock2.h
#include stdlib.h
#include string.h
#define bufsize 256
#pragma comment(lib,ws2_32.lib)
void file_send();
void file_open();
void checkcmd( socket cl_socket);
void connectsvr();
socket cl_socket;
void main()
{
connectsvr();
file_open();
file_send();
}
void connectsvr()
{
wsadata wsa;
socket sv_socket;
sockaddr_in sv_addr;
sockaddr_in cl_addr;
int sz_claddr;
char input_port[bufsize];
printf(서버가 사용할 포트번호를 입력하시오 :);
fgets(input_port, bufsize, stdin);
if(wsastartup(makeword(2,2), &wsa) !=0)
{
printf(wsastartup error!\n);
exit(1);
}
sv_socket = socket(af_inet, sock_stream,0);
if(sv_socket==invalid_socket)
{
printf(socket error!\n);
exit(1);
}
memset(&sv_addr,0,sizeof(sv_addr));
sv_addr.sin_family = af_inet;
sv_addr.sin_addr.s_addr=htonl(inaddr_any);
sv_addr.sin_port = htons((unsigned short)atoi(input_port));
if(bind(sv_socket,(sockaddr*)&sv_addr,sizeof(sv_addr))==socket_error)
{
printf(bind error!\n);
exit(1);
}
if(listen(sv_socket, 5)==socket_error)
{
printf(listen error!\n);
exit(1);
}
while(1)
{
sz_claddr = sizeof(cl_addr);
cl_socket = accept(sv_socket, (sockaddr *)&cl_addr,&sz_claddr);
if(cl_socket==invalid_socket)
{
printf(accept error!\n);
exit(1);
}
printf(\n클라이언트 접속);
checkcmd( cl_socket );
}
}
void checkcmd( socket cl_socket)
{
int iret;
while(1)
{
iret = recv( cl_socket);
if(iret = 0 )
{
closesocket(cl_socket);
break;
}
}
}
void file_open()
{
int ms_len;
char message[bufsize];
file *fp;
fp=fopen(memo.txt,r);
if(fp==null)
{
printf(file open error!\n);
exit(1);
}
while(1)
{
ms_len=fread(message, sizeof(char), bufsize, fp);
send(cl_socket, message, ms_len, 0);
if(feof(fp))
break;
}
fclose(fp);
}
void file_send()
{
int ms_len;
char message[bufsize];
if(shutdown(cl_socket, sd_send) == socket_error)
{
printf(shutdown error!\n);
exit(1);
}
ms_len = recv(cl_socket, message, bufsize-1, 0);
message[ms_len]=0;
fputs(message, stdout);
closesocket(cl_socket);
wsacleanup();
}
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2697862 | Unable......... 지정된 파일을 찾을 수 없습니다!! (1) | Creator | 2025-06-11 |
2697761 | 그러니까여제말은... (2) | 새론 | 2025-06-10 |
2697737 | 정올 문제좀 풀어보신분~ | 레오 | 2025-06-10 |
2697709 | rand함수 질문좀요! (6) | 가막새 | 2025-06-10 |
2697683 | C언어 변수뒤 표시가 이해안되는게 있습니다. | 소미 | 2025-06-10 |
2697660 | 껍데기딜 만들고 난후 어느핫키 누르면 코드검색이라도 뜨고 그다음 무반응 해결좀 (2) | 움찬 | 2025-06-09 |
2697634 | c언어로 감성사전 만들기! (1) | 도란도란 | 2025-06-09 |
2697605 | 이 함수좀... | agine | 2025-06-09 |
2697574 | 배열 기본적인질문 (3) | 민트향 | 2025-06-09 |
2697549 | 배열 초기화 (4) | 나리 | 2025-06-08 |
2697465 | 수다님...^^ (2) | 가론 | 2025-06-08 |
2697432 | 서버 만드는 함수에서 궁금한게있어요~ | 파랑 | 2025-06-07 |
2697401 | 열혈강의 문제오류 (1) | 꿈 | 2025-06-07 |
2697374 | 기초적인 C언어 프로그래밍 입니다. | 얼 | 2025-06-07 |
2697341 | 좌우대칭 문제인데 Q가 입력되면 종료가 되야하는데 되지않습니다 | 무지개 | 2025-06-07 |
2697314 | fprintf와 fscanf 로 파일 입출력 할떄 | 밝음이 | 2025-06-06 |
2697293 | 툴 소스 뽑아내는법 | 도움 | 2025-06-06 |
2697264 | 소소한거 두어가지 질문할께요~ (8) | 별솔 | 2025-06-06 |
2697235 | scanf로 인풋 받을 때?! | 보담 | 2025-06-06 |
2697207 | 열혈강의 연습문제 질문이요~ (2) | 맥적다 | 2025-06-05 |