UDP로 데이터 보내기에서 질문있습니다~
글쓴이: rdpn / 작성시간: 수, 2004/01/28 - 5:26오후
#define SERV_IP "203.227.204.213" #define C_PORT 9198 #define S_PORT 9199 struct sysinfo *info; char sinfo[256]; void c_send() { int sendsock; struct sockaddr_in servaddr; /****************************** send ******************************/ sendsock = socket(PF_INET, SOCK_DGRAM, 0); if(sendsock == -1) error_handling("socket() error"); memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = inet_addr(SERV_IP); servaddr.sin_port = htons(C_PORT); while(1) { fputs("Data Sending...\n\n", stdout); memset(&sinfo, 0, sizeof(sinfo)); sprintf(sinfo, "%d|%d|%d\n", info->procs, info->loads[0]*10, info->freeram); sendto(sendsock, sinfo, strlen(sinfo), 0, (struct sockaddr*)&servaddr, sizeof(servaddr)); printf("sinfo is %s\n", sinfo); sleep(0.1); } close(sendsock); /*******************************************************************/ }
안녕하세요.
가입하고 처음 올리는 질문이 되네요~~~
UDP 소켓 프로그래밍을 하기 위해서
저렇게 간단히 소스를 짜 보았습니다.
그런데 실행을 하게 되면 매번 이런 식의 오류가 나네요.
#] ./send
Data Sending...
세그멘테이션 오류
실제 메인에선 이 함수를 호출하는 역할 밖에 없거든요~
어느 부분이 잘못됐는지 잘 모르겠네요.
고수분들의 도움의 손길 기다리고 있을께요...ㅠㅠ
Forums:
gdb 써보세요...
GDB 써보세요..
char sinfo[256];
memset(&sinfo, 0, sizeof(sinfo)); X 일듯...
/** 주워 들은 것도 내 것이다. 많이 주워 들어야지*/
[code:1]struct sysinfo *info; ...spr
info->procs, info->loads, info->freeram 에서 세그멘테이션 오류가 나겠군요...
info에 적절한 값이 들어가야죠..
음...
시스템 함수에 있는 구조체를 쓴건데...
그걸 그대로 이용하기 위해 그렇게 쓴거거든요.
sysinfo 구조체의 저 세정보만 빼오고 싶은데
그럼 어떻게 빼오면 되나요...
I can do it!
sinfo는 array입니다.
&sinfo에서 &를 빼세요.
struct sysinfo *info;
여기에서 segmentation fault :oops: 가 나는데요...ㅡㅡ
만약 값을 제가 임의로 할당한다고 한다면
실시간으로 시스템의 running process수, 부하량, free memory 세가지 정보를 가져오고 싶은데
소용이 없는 거 아닌지 궁금합니다. :?
I can do it!
[code:1]#include <stdio.h>#inclu
이렇게 하니 잘 동작하는군요..^^;;
sysinfo 구조체를 포인터로 선언하신다면 메모리 할당을 해 주셔야 할껍니다..
===================================================
중요한건 얼마나 아느냐가 아니라 그것에 대한 열정이다.
감사합니다^^잘 되네요...
감사합니다^^
잘 되네요...
I can do it!
댓글 달기