Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http请求:Winsock < >在编码HTTP请求时,我使用VisualStudio作为C++,现在我的代码是这样的, #define WIN32_LEAN_AND_MEAN #include "stdafx.h" #include <cstdio> #include <cstdlib> #include <Winsock2.h> #include <WS2tcpip.h> #include <windows.h> #pragma comment (lib,"ws2_32") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2),&wsaData); SOCKET m_socket; m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(m_socket==INVALID_SOCKET) { printf("Invalid Socket :WSAGetLastError()"); } sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr("127.0.0.1"); clientService.sin_port = htons(5357); LPHOSTENT host = gethostbyname("72.144.89.32"); if(connect(m_socket,(SOCKADDR*)&clientService,sizeof(clientService))==SOCKET_ERROR) { printf("Connection Failure"); WSACleanup(); return 1; } char buffer[2048]; strcpy(buffer,"POST /dbarea.php HTTP/1.1\n"); strcat(buffer,"Content - Type:application/x-www-form-urlencoded\n"); strcat(buffer,"Host: localost\n"); strcat(buffer,"content-Length:32\n"); strcat(buffer,"\n"); strcat(buffer,"username=emeka1&password=laikan112"); //int n = write(SOCKADDR*,buffer,strlen(buffer)); printf("Data Sent Successfully.."); return 0; }_Http - Fatal编程技术网

Http请求:Winsock < >在编码HTTP请求时,我使用VisualStudio作为C++,现在我的代码是这样的, #define WIN32_LEAN_AND_MEAN #include "stdafx.h" #include <cstdio> #include <cstdlib> #include <Winsock2.h> #include <WS2tcpip.h> #include <windows.h> #pragma comment (lib,"ws2_32") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2),&wsaData); SOCKET m_socket; m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(m_socket==INVALID_SOCKET) { printf("Invalid Socket :WSAGetLastError()"); } sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr("127.0.0.1"); clientService.sin_port = htons(5357); LPHOSTENT host = gethostbyname("72.144.89.32"); if(connect(m_socket,(SOCKADDR*)&clientService,sizeof(clientService))==SOCKET_ERROR) { printf("Connection Failure"); WSACleanup(); return 1; } char buffer[2048]; strcpy(buffer,"POST /dbarea.php HTTP/1.1\n"); strcat(buffer,"Content - Type:application/x-www-form-urlencoded\n"); strcat(buffer,"Host: localost\n"); strcat(buffer,"content-Length:32\n"); strcat(buffer,"\n"); strcat(buffer,"username=emeka1&password=laikan112"); //int n = write(SOCKADDR*,buffer,strlen(buffer)); printf("Data Sent Successfully.."); return 0; }

Http请求:Winsock < >在编码HTTP请求时,我使用VisualStudio作为C++,现在我的代码是这样的, #define WIN32_LEAN_AND_MEAN #include "stdafx.h" #include <cstdio> #include <cstdlib> #include <Winsock2.h> #include <WS2tcpip.h> #include <windows.h> #pragma comment (lib,"ws2_32") int _tmain(int argc, _TCHAR* argv[]) { WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2,2),&wsaData); SOCKET m_socket; m_socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if(m_socket==INVALID_SOCKET) { printf("Invalid Socket :WSAGetLastError()"); } sockaddr_in clientService; clientService.sin_family = AF_INET; clientService.sin_addr.s_addr = inet_addr("127.0.0.1"); clientService.sin_port = htons(5357); LPHOSTENT host = gethostbyname("72.144.89.32"); if(connect(m_socket,(SOCKADDR*)&clientService,sizeof(clientService))==SOCKET_ERROR) { printf("Connection Failure"); WSACleanup(); return 1; } char buffer[2048]; strcpy(buffer,"POST /dbarea.php HTTP/1.1\n"); strcat(buffer,"Content - Type:application/x-www-form-urlencoded\n"); strcat(buffer,"Host: localost\n"); strcat(buffer,"content-Length:32\n"); strcat(buffer,"\n"); strcat(buffer,"username=emeka1&password=laikan112"); //int n = write(SOCKADDR*,buffer,strlen(buffer)); printf("Data Sent Successfully.."); return 0; },http,Http,现在我的php是这样的 <?php session_start(); $username = urldecode($_POST['username']); $password = urldecode($_POST['password']); echo "Username: $username\nPassword:$password"; ?> 现在我在php领域遇到了一个问题,它没有接收信息并再次打印,让我们看看,可能是什么问题?您的HTTP请求中有几个错误 您需要使用\r\n而不

现在我的php是这样的

<?php
session_start();
$username = urldecode($_POST['username']);
$password = urldecode($_POST['password']);

echo "Username: $username\nPassword:$password";
?>

现在我在php领域遇到了一个问题,它没有接收信息并再次打印,让我们看看,可能是什么问题?

您的HTTP请求中有几个错误

您需要使用\r\n而不是\n

内容类型必须是内容类型

localost需要是localhost

内容长度:32需要是内容长度:34

试试这个:

int _tmain(int argc, _TCHAR* argv[])
{
    WSADATA wsaData;
    int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    if (iResult != 0)
    {
        printf("WinSock startup error: %d\n", iResult);
        return 1;
    }

    SOCKET m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (m_socket == INVALID_SOCKET)
    {
        printf("Socket creation error: %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }

    sockaddr_in clientService = {0};
    clientService.sin_family = AF_INET;
    clientService.sin_addr.s_addr = inet_addr("127.0.0.1");
    clientService.sin_port = htons(5357);

    if (connect(m_socket, (SOCKADDR*)&clientService, sizeof(clientService)) == SOCKET_ERROR)
    {
        printf("Connection error: %d\n", WSAGetLastError());
        closesocket(m_socket);
        WSACleanup();
        return 1;
    }

    char buffer[2048];

    strcpy(buffer, "POST /dbarea.php HTTP/1.1\r\n");
    strcat(buffer, "Content-Type: application/x-www-form-urlencoded\r\n");
    strcat(buffer, "Host: localhost:5357\r\n");
    strcat(buffer, "Content-Length: 34\r\n");
    strcat(buffer, "\r\n");
    strcat(buffer, "username=emeka1&password=laikan112");

    char ptr = buffer;
    int len = strlen(buffer);

    do
    {
        int n = send(m_socket, ptr, len, 0);
        if (n < 1)
        {
            if (n == SOCKET_ERROR)
                printf("Send error: %d\n", WSAGetLastError());
            else
                printf("disconnected by server\n");

            closesocket(m_socket);
            WSACleanup();
            return 1;
        }

        ptr += n;
        len -= n;
    }
    while (len > 0);

    printf("Data Sent Successfully..\n");

    closesocket(m_socket);
    WSACleanup();

    return 0;
}
如果有更好的替代方案,比如微软的WinInet/WinHTTP API、curl库等,你真的不应该像这样从头开始编写自己的HTTP代码。让他们为你做艰苦的工作吧

#include <WinInet.h>
#include <tchar.h>

void ReportWinInetError(const char *operation)
{
    DWORD dwErr = GetLastError();
    if (dwErr == ERROR_INTERNET_EXTENDED_ERROR)
    {
        LPTSTR szBuffer = NULL;
        DWORD dwLength = 0;

        BOOL bRet = InternetGetLastResponseInfo(&dwErr, NULL, &dwLength);
        if ((bRet == FALSE) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER))
        {
            szBuffer = new TCHAR[dwLength+1];
            bRet = InternetGetLastResponseInfo(&dwErr, szBuffer, &dwLength);
        }

        if (bRet)
            _tprintf(_T("WinInet error while %hs: %u %*s"), operation, dwErr, dwLength, szBuffer);
        else
            printf("Unknown WinInet error while %s", operation);

        delete[] szBuffer;
    }
    else
        printf("WinInet error while %s: %u", operation, dwErr);
}

int _tmain(int argc, _TCHAR* argv[])
{
    HINTERNET hInternet = InternetOpen(TEXT("MyApp"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    if (!hInternet)
    {
        ReportWinInetError("opening session");
        return 1;
    }

    HINTERNET hConnect = InternetConnect(hInternet, TEXT("127.0.0.1"), 5357, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
    if (!hConnect)
    {
        ReportWinInetError("connecting session");
        InternetCloseHandle(hInternet);
        return 1;
    }

    HINTERNET hRequest = HttpOpenRequest(hConnect, TEXT("POST"), TEXT("/dbarea.php"), TEXT("HTTP/1.1"), NULL, NULL, 0, 0);
    if (!hRequest)
    {
        ReportWinInetError("opening request");
        InternetCloseHandle(hConnect);
        InternetCloseHandle(hInternet);
        return 1;
    }

    if (!HttpSendRequest(hRequest, TEXT("Content-Type: application/x-www-form-urlencoded"), -1, "username=emeka1&password=laikan112", 34))
    {
        ReportWinInetError("sending request");
        InternetCloseHandle(hRequest);
        InternetCloseHandle(hConnect);
        InternetCloseHandle(hInternet);
        return 1;
    }

    printf("Data Sent Successfully..\n");

    InternetCloseHandle(hRequest);
    InternetCloseHandle(hConnect);
    InternetCloseHandle(hInternet);

    return 0;
}

如果这些是真实的登录凭据,你应该编辑你的帖子。它们不是@bluedogGood man,正在检查。@bluedog,你认为php区域有什么问题?为什么你的php服务器运行在端口5357而不是标准端口80上?正在处理,谢谢,连接并显示成功发送的数据现在php区域,将端口更改为端口80我编写了类似的代码它只是显示数组,但没有进一步显示任何输出
#include <curl/curl.h> 

int _tmain(int argc, _TCHAR* argv[])
{
    CURLCode ret = curl_global_init(CURL_GLOBAL_DEFAULT);
    if (ret != CURLE_OK)
    {
        printf("Curl init error: %d\n", ret);
        return 1;
    }

    CURL *curl = curl_easy_init(); 
    if (!curl)
    {
        printf("Curl request creation error\n");
        curl_global_cleanup(); 
        return 1;
    }

    curl_easy_setopt(curl, CURLOPT_URL, "http://127.0.0.1:5357/dbarea.php"); 
    curl_easy_setopt(curl, CURLOPT_POST, 1); 
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "username=emeka1&password=laikan112");
    curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, -1);

    ret = curl_easy_perform(curl); 
    if (ret != CURLE_OK)
    {
        printf("Curl send error: %d\n", ret);
        curl_easy_cleanup(curl); 
        curl_global_cleanup(); 
        return 1;
    }

    printf("Data Sent Successfully..\n");

    curl_easy_cleanup(curl); 
    curl_global_cleanup(); 
}