프로그래밍 QnA

dhlee1985의 이미지

이직하고 구조체에 대한 고민...

여태까지 구조체 멤버변수로 CString을 사용한 적이 없습니다.
구조체는 무조건 사용 전에 memset_s()와 같은 함수를 통해 초기화를 해야된다는게
프로그래밍 지론(?) 중 하나 였거든요.
문자열 쓸일이 있으면 CString 대신 TCHAR[]을 사용했습니다...
다행스럽게도 여태까지 거쳐간 회사들도 전부 구조체 안에서만큼은 CString을 사용안했구요...


근데 이번에 입사한 회사에서는 문자열 처리를 전부 CString을 하더군요.(구조체안에서도)
팀 인원이 꽤많아 이런 팀 규칙을 깨고 제 지론때문에 제가 수정하는 소스에서만 TCHAR[]을 사용했다가는
다들 피곤해 질꺼같아 저도 CString을 사용하려고 합니다.

지금 제가 고민 중인건
CString이 들어있는 구조체는 초기화&복사를 하기위해서 생성자와 대입연산자를 넣어야 할텐데
이건 그렇다 치더라도 구조체 안에 int,bool 값따위만 있는 구조체는 생성자,대입연산자를 만들기보다는

woooke의 이미지

c언어 소켓프로그래밍] 서버 select와 쓰레드 관련 질문입니다.

안녕하십니까

새내기 인턴으로 네트워크 프로그래밍을 공부하는 중에 질문이 있이 글을 올립니다.

1] Thread를 이용해서 다중 처리 서버를 제작하는데

클라이언트에서 connection이 들어오면 accept하고 쓰레드에 fd를 넘겨서 처리하는 서버를 만들고 테스트하였습니다.

테스트 클라이언트는 쓰레드를 생성해서 한번에 여러 데이터를 서버에 쏘게되는데, 이때 서버에서 fd가 10~20%정도 씹힙니다.

메인쓰레드에서 클라이언트 요청 처리 쓰레드를 호출한 후

메인쓰레드에서 클라이언트 요청 처리 쓰레드보다 먼저 매개변수에 접근하게 되어 발생하는 듯 한데 해결책을 어떻게 잡아야

할지 궁금합니다.

2] 멘토님께서 select를 하고 accept를 윗단해서 한 후 쓰레드에 fd를 넘겨서 서버를 작성하라고 하셨는데,

개인적인 생각으로는 select를 하고 쓰레드에서 accept를 하여 처리한다면 위의 1번 이슈는 해결될 것 같은데, (매개변수로 서버 소켓만 받으면 되므로)

Internet03의 이미지

C# TCP/IP 패킷 압축전송 DeflateStream질문 드립니다.

먼저 코드부터 보여드리겠습니다...

Server
byte[] sizebuf = new byte[sizeof(long)]; //받을 데이터 사이즈 크기 확인
screen_ns.Read(sizebuf, 0, sizeof(long));
screen_ns.Flush();

long size = BitConverter.ToInt64(sizebuf, 0);

if (size < 0 || size > 500000)
continue;
byte[] buf = new byte[size];
screen_ns.Read(buf, 0, buf.Length); //클라이언트로부터 값 리스브

inviolable의 이미지

네트워크 관련해서 볼 책 더 있을까요???


1. 데이터 통신과 컴퓨터 망

2. 컴퓨터 네트워크 구조

3. TCP/IP 윈도우 소켓 프로그래밍

이 3개 다 봤는데

네트워크 재밌어서 그러는데 네트워크 관련해서 또 다른 주제 볼 책 있으면 추천 좀 부탁드립니다.

forest62590의 이미지

user level thread / kernel level thread 관련질문입니다.

공룡책을(Operating system concepts)보니

"사용자 수준 스레드, 커널 수준 스레드를 지원하는 운영체제에서는 스케줄되는 대상은 프로세스가 아니라 커널 수준 스레드이다."를

보고 개인적으로 이해한것이 맞는지 궁금하여 질문드립니다.

---------------------------------------------------------------------------------

일반적으로 책에서 설명하는 프로세스 스케줄링 알고리즘(라운드 로빈, FCFS, ...)은

실질적으로는 커널 스레드에서 적용된다고 봐도 되며

커널은 커널 스레드를 생성된 프로세스의 종류에 상관없이

커널 스레드 전체를 해당 스케줄 알고리즘으로 스케줄링한다.

그리고 프로세스 상태라고 설명하는 run, block, ready같은 것은

단일 프로세스 단일 스레드라고 가정하였을 때

커널 스레드를 스케줄링하여 나오는 상태와 동일하기 때문에

dunphy23의 이미지

Objective C에서 프로퍼티에 관한 질문입니다.

안녕하세요. 이번에 Objective C를 공부해보면서 좀 헷갈리는부분이 있어서 질문올립니다.

일단 소스는 아래와 같구요.

hxploit의 이미지

localhost:55555 로 바인딩하는데 이미 TIME_WAIT 가 있을 때 랜덤 포트로 바인딩되는 경우가 있나요?

음.. 좀 황당한 경우인데요.

대략 이런식으로

addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr("127.0.0.1");
addr.sin_port = htons(55555);

이렇게 127.0.0.1:55555 를 바인딩하고 있습니다.
이 때, 처음 한 번 열때는 당연히 잘 열립니다. 이 상태에서 한 번 클라이언트 연결을 시킨 다음
바로 종료해서 netstat 에 TIME_WAIT 가 잠깐 남아있도록 합니다.

그리고 이 상태에서 다시 서버를 켜서 55555 바인딩을 시도하면, 에러가 나거나 하면 모르겠는데
잘 실행이 되고, netstat 을 확인해보면 황당하게도 0.0.0.0:xxxxx 로 바인딩 되어 있습니다.
포트는 랜덤하고 localhost 가 아니라 INADDR_ANY 가 되어 있습니다.

이게 정상적인 경우가 맞나요?

sweetbj의 이미지

[초보] c언어 헤더파일 관련 질문~!!!!

안녕하세요~

c언어 헤더파일에 관한 질문인데요

2개의 헤더 파일이 있는데 동일한 이름의 변수나 함수로 각 헤더파일에 정의되어 있다면

어떻게 코드를 짜야하나요??

예를 들어 A라는 헤더에 pi=3.14라 정의되어 있고, B라는 헤더에는 pi=0.1이라 정의되어 있다면,

main.c에서 어떤 함수는 A 헤더의 pi를 찾아야하고, 어떤 함수는 B 헤더의 pi를 찾아서 쓰게 해야 합니다.

물론 중복 변수를 선언한 거 자체가 실수라고 생각하지만... 바꿀 수 없다면 어떻게 코드를 짜야하나요???

hnrapper의 이미지

OS X에서 앱 실행 vs UNIX 바이너리 실행의 차이


안녕하세요, OS X 프로그래밍 완전 초짜 프로그래머입니다.
OS X 용 앱을 개발하고 있는데,
프로그램은 가상 파일시스템(Fuse를 사용한) 구현입니다.
그런데 개발 도중 심각한 문제가 발생하고 있습니다.

프로그램 동작상 가상 파일 시스템 내부의 여러 폴더를 Finder에서 왔다갔다 하면
수많은 파일이 open됐다가 release되는데 (thumbnail 생성등을 이유로)

이상한건
1. X Code 상에서 바로 실행을 시키면 프로그램의 동작에 아무 이상이 없는데,

2. 빌드해서 만들어진 XXX.app 파일을 더블 클릭해서 앱을 실행하면 "dnssd_clientstub deliver_request: socketpair failed 24 (Too many open files)" 라는 에러를 내뿜으면서 파일 핸들이 망가지면서 가상 파일시스템 자체가 망가져 버립니다.

페이지

프로그래밍 QnA 구독하기