소켓프로그래밍 SEND 관련

hyun1023의 이미지

서버에서 클라이언트로 SEND 로 2048 만큼의 데이터를 보냅니다.

근데 이유를 알수없이 전송이 안돼고 바로 끈겨버립니다. 데이타 크기가 커서 그런건지.. 바이너리로 읽어서 0 도 포함돼서 그런건지 도저히 알수가없네요.. 여기서 생길 문제점은 몰까요..

#define DATA_BUF 2049 입니다.

Necromancer의 이미지

소스를 봐야 알 수 있을꺼 같군요 :x

Written By the Black Knight of Destruction

terzeron의 이미지

오동작한 위치에서 에러 코드를 출력해보시죠.

익명 사용자의 이미지

void start_send(int *data_sock) {

        FILE *fd;
        char openfile[strlen(file_queue[0].path)+strlen(file_queue[0].filename)+4];
        printf("path : %s/%s\n",file_queue[0].path,file_queue[0].filename);
        snprintf(openfile,sizeof(openfile),"%s/%s",file_queue[0].path,file_queue[0].filename);
        fd=fopen(openfile,"rb");
        if(fd==NULL) error_handling("File open error");

        int i;
        int filesize;
        int read_num = 0;
        int send_len = 0;
        int send_num = 0;
        int data_len = 0;
        int count = 0;
        int s0,s1,s2;
        char c0,c1,c2;
        char data_buf[DATA_BUF];
        char out_buf[DATA_BUF];
        memset(data_buf,0x0,DATA_BUF);
        memset(out_buf,0x0,DATA_BUF);


        while(data_len < file_queue[0].filesize) {

                s0=s1=s1=0;
                c0=c1=c2='\0';
                printf("while()\n");
                send_len=0;
                send_num=0;
                memset(data_buf,0x0,DATA_BUF);

                read_num = fread(&data_buf[send_len+3],1,(DATA_BUF-1-3)-send_len,fd);
                s1 = (read_num - 3)%256;
                s2 = (read_num - 3)/256;
                printf("read_num : %d , s1 : %d , s2 : %d\n",read_num,s1,s2);


                snprintf(c0,1,"%d",0);
                snprintf(c1,1,"%d",s1);
                snprintf(c2,1,"%d",s2);
                data_buf[0] = c0;
                data_buf[1] = c1;
                data_buf[2] = c2;
        //      for(send_num=0;send_num<read_num+3;) {
                send_num = send(*data_sock,data_buf,MAX_BUF-1000,0);

                if(send_num == -1) {
                        error_handling("data send error\n");
                }
        //      }

}
hyun1023의 이미지

hyun1023 wrote:
서버에서 클라이언트로 SEND 로 2048 만큼의 데이터를 보냅니다.

근데 이유를 알수없이 전송이 안돼고 바로 끈겨버립니다. 데이타 크기가 커서 그런건지.. 바이너리로 읽어서 0 도 포함돼서 그런건지 도저히 알수가없네요.. 여기서 생길 문제점은 몰까요..

#define DATA_BUF 2049 입니다.

아이고 제가 다른부분에서 실수했네용 ^^; 답벼주신분들 감사합니다

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.