C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[61748] tcp/ip 연결은 되는데 전송이 안돼여...
초짜~ [ljhgod] 1447 읽음    2010-07-01 14:56
tcp/ip client 프로그램을 짜고 있는데

연결은 되는데, send를 하면 받는 쪽에서는 아무런 반응이 없습니다.

고수들의 한 수를 기대합니다.

몇일째 고생하고 있습니다.

=========<source>======================
    WORD wVersionRequested;
    WSADATA wsaData;
    wVersionRequested = MAKEWORD( 2, 2 );
    WSAStartup(MAKEWORD(2,2), &wsaData);

    SOCKET socket;

    unsigned int addr;
    int socket_type = SOCK_STREAM;
    struct sockaddr_in server;
    struct hostent *hp;
    LPSTR server_name = _ipAddress.c_str();
    if(isalpha(server_name[0]))
    {
        hp = gethostbyname(server_name);
        if(hp == NULL) return ;
        memcpy((char *)&addr, hp->h_addr, hp->h_length);
    }
    else
    {
        addr = inet_addr(server_name);
    }

    memset(&server,0,sizeof(server));
    server.sin_addr.s_addr = addr;
    server.sin_family = AF_INET;
    server.sin_port = htons(_port);
    BOOL bZero = TRUE;
    int nZero = 0;
    int nInterval = 1000;

    try
    {
        socket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);
        int nRet = setsockopt(socket, IPPROTO_TCP, TCP_NODELAY, (char *)&bZero, sizeof(BOOL));
        nRet = setsockopt(socket, SOL_SOCKET, SO_RCVBUF, (char *)&nZero, sizeof(int));
        nRet = setsockopt(socket, SOL_SOCKET, SO_RCVTIMEO,    (char *)&nInterval, sizeof(int));
        if (connect(socket,(struct sockaddr*)&server,sizeof(server)) == SOCKET_ERROR )
        {
            strLog.printf("\t[소켓 생성실패] (IP:%s)\t (PORT:%d)", _ipAddress, _port);
            return ;
        }
        strLog.printf("\t[소켓 생성] (IP:%s)\t (PORT:%d)", _ipAddress, _port);
    }
    catch(...)
    {
        closesocket(socket);
        return ;
    }

    try
    {
        // CCTV로 패킷 전송
        int nErr = 0;
        DWORD dwSendNumBytes = 0;
        DWORD dwSendLen = 0;
        if(socket != INVALID_SOCKET)
        {
            DWORD dwFlags = 0;
            WSABUF wsaBuf;
            wsaBuf.buf = (char *) (sMsgSndCCTV.c_str());
            wsaBuf.len = sMsgSndCCTV.Length();
            nErr = WSASend(socket, &wsaBuf, 1, &dwSendNumBytes, dwFlags, NULL, NULL);
            if (nErr == SOCKET_ERROR)
            {
                strLog.printf("\t CCTV 전송실패");
            }
            else
            {
                strLog.printf("\t CCTV 전송완료");
                char chrMsgRcvCCTV[1000];
                memset( chrMsgRcvCCTV, 0x00, 1000 );
                DWORD dwFlag = 0;
                DWORD dwRead;

                WSABUF wsabuf;
                wsabuf.buf = chrMsgRcvCCTV;
                wsabuf.len = 1;

                nErr = WSARecv(socket, &wsabuf, 1, &dwRead, &dwFlag, NULL, NULL);

                if(nError == SOCKET_ERROR && (WSA_IO_PENDING!=WSAGetLastError()))
                {
                    return SOCKET_ERROR;
                }

                if ( nErr == 0 )
                {
                    sMsgRcvCCTV = *chrMsgRcvCCTV;
                    strLog.printf("\tCCTV에서 받은 메세지 : %s", sMsgRcvCCTV);
                }
                else
                {
                    strLog.printf("\tCCTV 수신 오류");
                }
            }
        }
    }
    catch(Exception &E)
    {
        strLog.printf("\t송신 에러: %s\r\n", E.Message );
    }

+ -

관련 글 리스트
61748 tcp/ip 연결은 되는데 전송이 안돼여... 초짜~ 1447 2010/07/01
61756     Re:tcp/ip 연결은 되는데 전송이 안돼여... 땅주인 1451 2010/07/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.