프로그래밍 QnA

plusme의 이미지

소리바다나 그누텔라 같은.

peer와 peer 끼리 서로 discover 를 해야 잖습니까.

이 경우 peer 사이에 다른 peer들의 정보를 어떻게 알수가 있는거죠?

port가 정해져 있어서 그 포트로 udp listen 하고 있다가

어떤 peer가 들어오면 그 peer는 subnet으로 broadcast 하면

그 정보를 다른 peer들이 아는건가요?

jagalchee의 이미지

데이타베이스 디자인을 어떻게 해야 될지 고민입니다.

p2p서버를 짜는 중인데요. p2p 서버는 클라이언트들이 가지고 있는 파일 목록들을 데이타베이스를 이용해서 관리하려고 합니다.
우선 생각한 테이블 디자인은 다음과 같습니다.

첫째로, 접속한 클라이언트들의 목록을 저장하는 테이블을 만듭니다.
이 테이블의 애트리뷰트는 2개로 아이피주소와 소켓번호입니다.(한 컴퓨터내에서 다중접속을 허용하므로, 소켓번호도 포합시켰습니다.)

둘째로, 하나의 접속 클라이언트마다 그 클라이언트가 공유하고 있는 파일목록들을 저장하는 테이블을 만듭니다. 이 테이블의 애트리뷰트는 1개로, 파일이름입니다. 한 row에 파일명 1개씩이 저장됩니다. 그리고 테이블명은 해당 클라이언트의 소켓 번호로 할 생각입니다.

shs0917의 이미지

signal함수에 대한 질문..

요즘 어드밴스트 유닉스 프로그래밍 책을 혼자 공부중인데요..
signal 함수에 대해서 이해가 잘 가지 않아서 질문을 올려봅니다.

#include <signal.h>

void (*signal (int signo, void (*func) (int)) ) (int);

그리고 이 원형을 좀 더 쉽게 하기 위해서..
typedef void Sigfunc(int);

Sigfunc *signal (int, Sigfunc *);

이렇게 되어 있는데요.. typedef해서 void 자리에 저렇게 바꾸면서
해봐도.. 함수가 저렇게 변하는게 이해가 잘 안되요.. :oops:
vilinux의 이미지

connect 질문이요?

TCP 프로그램 하는중입니다.
환경은 리룩스 gcc 로 컴파일하고요

서버쪽에서는 클라이언트 쪽에서 들어올때마다 포크생성해서 통신하고요
클라이언트쪽 에서는 소켓 생성해서 데이터 를 샌드하고 잘받았는지
리시브 한다음에 리시브에서 에러나 머 키타 돌발 상황이 발생하면
리커넥 하게 해놨는데 문제는....
셀렉트 함수 써서 리스비 에러면 소켓을 close 하고 다시 소켓 생성
그다음에 커넥을 시도 하는데...............

소켓을 생성 하고 커넥을 하니까 서버쪽에서 프로세서를 계속 생성하게

sunge의 이미지

[ 질문 ] poll에서 검색 문제.

저번에 epoll질문 올렸던... 답변해 주셨던 분들께는 정말 고마습니다. 결국 사용은 못했지만 이것 저것 찾아보면서 알게 된것도 있네요..
근데 이번에는 <sys/poll.h>이네요. 검색할 소켓이 1000개 정도까지는 잘 돌아가던 서버가 검사할 소켓의 수를 1000개를 좀 넘개 잡아주면 그 이상부터는 동작을 안하네요... ( poll에서 반환값이 -1이네요. )
질문의 요지는
1. poll로 검사할수있는 수의 한계가 있는건가요?
2. 리눅스 시스템에서 열수있는 소켓( 서버이기에 )의 수의 한계가 있는건가요?

wafe의 이미지

C++, 다중상속, dynamic_cast

클래스 A가 있습니다. 그리고 인터페이스 흉내를 내려고 클래스 B를 만들어서 가상함수만 넣었습니다. 그리고 C는 A와 B를 상속 받아서 가상 함수를 구현했습니다.

class A {
public:
    void MethodA1();
};

class B {
public:
    virtual void MethodB1() = 0;
};

class C : public A, B {
   void MethodB1() { // blahblah  }
};

그 외에도 같은 형식으로 A,B를 상속받아 B의 가상 함수를 구현한 클래스들이 많습니다. D, E, F, ...

mybilberry의 이미지

thread와 signal 관련 문의 드립니다.

리눅스는 초보라서....

유닉스의 SUN OS에서 보면요...
usleep()은 여러개의 thread 사용시 unsafe 하고 nanosleep()을 사용하면 safe 하다고 알고 있습니다.
리눅스에서도 동일한가요?

여러개의 thread가 동시에 돌고 있는 프로그램에서 각 thread가 다른 주기로 잠시 정지상태에 있다가 다시 동작하려고 할 때, 안전하게 쓰기위해서는 nanosleep()을 사용하면 되는지...

답변좀 부탁드려요.....

kcv의 이미지

[다시?]printf함수 사용시에 왜 \n을 해야 하는가요??

자꾸 올려서 죄송하네요..
답변 읽어본후에, 혹시 환경문제인지 해서 다른컴퓨터에서 해보니 잘되는군요
^0^;;;

안되던 환경은 와우리눅스7.3버젼입니다 ㅠㅠ
학교에서 어떤컴퓨터에 깔아본건데.. 수업시에 실습을 위해서 깔아논거래요..

왜이러지 @@;;

gyxor의 이미지

[C++] Assembler 를 C나 C++로 만들때에..

어셈블리어의 명령어들은 레지스터에 직접 값을 넣어야하는 명령어 들이
대부분인데요.. 각종 인터럽트도 많이 있구요
결과적으로 원하는 출력이나 실행을 어느정도는 구현해줄수 있을거 같은데요
어셈블러로서의 기능을 내부적으로도 완전히 구현하도록 하는것이 가능한지
궁금합니다.

첫째,
예를들어
MOV DX,AX 같은 어셈블리어 소스 C,C++로 만든 어셈블러에서
처리를 하는것이 어떻게 가능한지 궁금합니다.
레지스터에 직접 값을 넣거나 읽어오는 명령어가 ..

kcv의 이미지

printf함수 사용시에 왜 \n을 해야 하는가요??

안녕하세요
리눅스에서 c는 첨짜보는 초짜입니다.

윈도우에서 짤떄는 \n없어도 출력이 잘되더라구요
예를 들어서 printf("abc");

근데 리눅스에서는 수십번 컴파일,실행을 해도 화면에 아무것도 안나타나더군요

\n을 붙이니까 그제서야 나오던데

이유가 뭔가요..

답변검색을 해보니 fflush가 어쩌구 저쩌구 하시던데 ..
제가 혹시나 해서 해봤는데 뭐가 문제인지는 몰라도, 안되더군요

#include<stdio.h>
void main()
{
printf("a");
fflush(stdout);

페이지

프로그래밍 QnA 구독하기