2012-05-02 3 views
1

특정 클라이언트에서 오는 오류를 관리하기 위해 앱을 시작하면 현재 오류 로그 파일을 내게 보내도록 할 생각입니다.앱이 자동으로 로그 파일을 보내도록 지원하는 방법은 무엇입니까?

VB6/XP 환경에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

이메일은 쉽게 들릴 수 있지만 모든 종류의 안티 바이러스/방화벽 보호 기능을 사용할 수 있다고 상상해보십시오.

웹 서버에 연결하는 것이 더 좋을 수도 있습니다. 이 경우 앱이 여전히 Windows 방화벽을 열어야합니까? 나는이 같은 클라이언트 오류 로그를 업로드 XMLHTTP을 사용하고

+0

모든 종류의, 나는 생각한다. Windows 방화벽 응답을 트리거하지 않을 수있는 유일한 방법은 포트 80에서 HTTP 요청을 시도했지만 Windows 방화벽을 트리거 할 수도 있습니다. 방화벽은 앱이 이상한 일을 할 수 없도록해야합니다. 예를 들어 사용자에게 경고하지 않고 HTTP 요청을하도록 허용하는 경우 악성 프로그램이 HTTP GET 요청을 통해 악성 파일을 다운로드하여 사용자의 컴퓨터를 손상시킬 수 있습니다. 그렇게하면 Windows 방화벽이 실행됩니다. – moowiz2020

+0

@ moowiz2020 : 앱 및 필요한 포트의 Windows 방화벽에 예외를 추가하기 만하면 되나요? – CJ7

+0

기본적으로 그렇습니다. 그래서 이메일이나 HTTP 게시물을 보내는 것이 쉬울 것이라고 생각합니다. 전자 메일이나 HTTP 요청을 보내려고하면 응용 프로그램이 인터넷에 액세스 할 수 있도록 할 것인지 묻는 Windows 방화벽 창이 팝업됩니다. 이 중 어떤 것도 실제로 테스트하지 않았으므로 문제가있을 수 있습니다. – moowiz2020

답변

0

: 당신은 Windows 방화벽을 트리거에 자신의 컴퓨터에서 연결 http://wqweto.wordpress.com/2011/07/12/vb6-using-wininet-to-post-binary-file/

Private Sub pvPostFile(sUrl As String, sFileName As String, Optional ByVal bAsync As Boolean) 
    Const STR_BOUNDARY As String = "3fbd04f5-b1ed-4060-99b9-fca7ff59c113" 
    Dim nFile   As Integer 
    Dim baBuffer()  As Byte 
    Dim sPostData  As String 

    '--- read file 
    nFile = FreeFile 
    Open sFileName For Binary Access Read As nFile 
    If LOF(nFile) > 0 Then 
     ReDim baBuffer(0 To LOF(nFile) - 1) As Byte 
     Get nFile, , baBuffer 
     sPostData = StrConv(baBuffer, vbUnicode) 
    End If 
    Close nFile 
    '--- prepare body 
    sPostData = "--" & STR_BOUNDARY & vbCrLf & _ 
     "Content-Disposition: form-data; name=""uploadfile""; filename=""" & Mid$(sFileName, InStrRev(sFileName, "\") + 1) & """" & vbCrLf & _ 
     "Content-Type: application/octet-stream" & vbCrLf & vbCrLf & _ 
     sPostData & vbCrLf & _ 
     "--" & STR_BOUNDARY & "--" 
    '--- post 
    With CreateObject("Microsoft.XMLHTTP") 
     .Open "POST", sUrl, bAsync 
     .SetRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY 
     .Send pvToByteArray(sPostData) 
    End With 
End Sub 

Private Function pvToByteArray(sText As String) As Byte() 
    pvToByteArray = StrConv(sText, vbFromUnicode) 
End Function 
+0

HTTP 에이전트를 사용할 때와 같은 문제가있는 것 같습니다. 배포 문제가 있음을 알려줍니다. Microsoft.XMLHTTP, WinHttp.WinHttpRequest.5.1 및 WinInet 중에서 권할 만합니까? – CJ7

+0

'XMLHTTP'는 종종 손상되었지만, 구형 OS에서는'WinHttpRequest'를 사용할 수 없습니다. 더 호환되기 때문에'XMLHTTP'를 사용하고 있습니다. 의심스러운 사용자는 브라우저에서 AJAX없이 오랫동안 참을 수 있습니다. – wqw

+1

@wqw 링크 전용 답변을 피하기 위해 몇 가지 샘플 코드를 추가하는 것을 고려하십시오. – JimmyPena