프로그래밍 QnA

purewell의 이미지

ioctl의 FIONREAD로 알아온 바이트 크기와 recv

소켓에서 데이터를 받아오기 전에 ioctl의 FIONREAD로

얼마만큼의 데이터를 읽을 수 있는지 알 수 있습니다.

그렇다면 그 데이터크기만큼 recv 하면 확실히 받아 오는 것입니까?

즉, for/while 따위로 다 받아질 때까지 삽질 안 해도 되는 것인지요?

[code:1]
unsigned long nRead;
int nRes;
char cBuff[SOMEBIGNUMBER]

nRes=ioctl(csock, FIONREAD, &nRead);

...

recv(csock, cBuff, nRead, 0); // HERE!!
// recv로 제대로 받을 수 있을지 알 수 없기 때문에
// 보통 for/while을 써서 원하는 데이터만큼 다 받기

stratus의 이미지

dcethreads-2.0.2 컴파일 하신 분~~ 이것 좀 봐주세요~^^;

dcethreads-2.0.2.tar.gz 를 받아서 인스톨하려고 하는데,
컴파일 도중 아래와 같은 오류가 발생하는데 원인 좀 알려주세요.
(RedHat 8.0 (2.4.18-14smp), gcc 3.2-7 환경입니다.)

configure 는 모두 default를 사용했고,
#./configure
#make

하였더니 warning을 에러처리 하면서 종료되길래,
warning option 없애주고
(./src/Makefile.in 을 아래처럼 바꿨는데, gcc 옵션을 맞게 한건지 ^^; )

AM_CFLAGS = -Wall -W -Werror -pipe
---> 이부분을 다음과 같이 바꿨어요~
AM_CFLAGS = -pipe

그리고 나서 다시 컴파일 했더니,

yc307의 이미지

문자열 처리에서여... 입력이 안되네요

소스 코드는 다음과 같습니다.

===============================================

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *compression(char *);

main()
{
char cue;
printf("압축(Compression), 종료(Exit) ?");
scanf("%c",&cue);
char message[100];
int len;


if (cue == 'c' || cue == 'C')
{
printf("압축할 문자열 >>> ");
fgets(message, sizeof(message), stdin);
len = strlen(message);
message[len-1] = '\0';
printf("\n압축된 문자열 >>> %s",compression(message));
}

김학수의 이미지

UDP 통신에서의 fork.

udp 통신 프로그램을 짜고 있습니다...
데이터를 받은 후 fork 를 하여 받은 데이터를 처리하고.. 처리하는 동안
새로오는 데이터도 물론 처리를 해야겠죠..

제가 만드는 대략적인 소스입니다..
여러가지를 빼서 간단하게 추리다 보니 이해가 안되는 부분이 있을지 모르나
대충 아 이렇게 흘러가는구나 하는 정도는 아시리라 믿습니당..

[code:1]
#include "all.h"

int task_no;
int sun_sock;
int web_serial;

main()
{
int ret;
int Pid;
char rbuf[512];

zini08의 이미지

파일의 사용여부를 알수 있는 방법이 있나요??

안녕하세요...
처음으로 글을 올려보는군요..^^

만약 소켓통신을 한다고 할때..
어떤 파일이 다 쓰인뒤에 그것을 전송을 할려고 합니다
그러니깐 다른 프로그램에서 쓰고 있는 도중에서는 그 열려진 정보를 알려주며..
접근을 막는거죠..
개념은 세마포어 비슷한데 자기 프로그램이 아닌 다른프로그램에서
그 파일을 열고 있는지 알려면...어떻게 해야 하나요??

sadrove의 이미지

다중 for문에서 빠져나가려면..?

예를 들어..

for(i=0; i<100; i++)
for(j=0; j<100; j++)
for(t=0; t<100; t++)
if(sum == 100)
break;

위와 같이 있을때요..
break;로는 for문 하나밖에 못 빠져나가는 걸로 알고 있는데..
이 for문 전체를 다 빠져나가고 싶으면 어케해야 할까요..?...
전 그냥 Goto문으로 했는데..웬지 더좋은방법이있을꺼 가타서..^^...

kn31232의 이미지

recv와 send..

소켓 통신에서 순차적으로 recv와 send를 하지 않고...

어느때고 recv와 send요청이 왔을때 사용 할 수 있도록 코딩 하려면 어떻게 해야 할까요....!?

보통 recv요청을 기다리고....recv했을때 send하고...이런식의 코딩만 한거 같네요....-_-;

요청이 들어왔을때 반응하도록 하려면 어떻게 해야하는지 궁금합니다...TT_TT

고수님들~~~!! ^^

sadrove의 이미지

C에서 화면을 지우려면..?

프로그램을 짤때요..

실행시키면 현재 프롬프트 다음에 프로그램이 실행되잖아요...

프로그램을 실행시키면 현재 화면을 클리어하고 실행되게 하고 싶은데..

그런 함수가있는건가요..?

아니면 쉘명령어를 프로그램상에서 실행시킬려면 어떻게해야 하는지..^^;;;

현재 리눅스를 쓰고 있습니다...언어는 C구요...

부탁드릴께요..^^...

날씨가 덥네여....후덥지근...ㅠ.ㅠ...

song의 이미지

int - &gt; char *....

구현한 string token함수는 구분자(char *) 를 받습니다.

ascii 4번을 구분자로 해줘야 합니다.

itoa 가 없어서 간단히
sprintf(get_int,"%d",toascii(4)); 이런식으로 버퍼에 담았습니다.

하지만 캐스팅이 되질 않는군요.

참고 함수 입니다.

char ** tokenize(const char *string, const char *delim, int *n)
{
char **res = NULL;
const char *nxt, *prev;
char *tmp;
int step = strlen(delim);
int i;

/* Check is there is something to tokenize */
tmp = str_clean(string);
if(!strcmp(tmp, ""))
{
*n = 0;
efree(tmp);

comguy2k의 이미지

이 에러는 어떻게 잡죠??

#include <stdio.h>
struct a{
int x;
};
main(void)
{
int num;
num=0;
struct a b;
}

==>결과
[comguy2k@181s xyz]$ gcc -o b a.c
a.c: In function `main':
a.c:9: parse error before `struct'

파서에러가 나는데 그 정확한 이유를 설명해주시면 감사하겠습니다. 고수분님들..

페이지

프로그래밍 QnA 구독하기