<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### socket文件傳輸 ***** ![](https://img.kancloud.cn/bd/57/bd57358564b03da4f2f205b993d98bee_1518x824.png) 遇到fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 這不是錯誤,它是來自Microsoft編譯器的警告。 選擇項目,然后單擊上下文菜單中的“屬性”。 在對話框中,選擇Configuration Properties- > C/C++- >Preprocessor 在PreprocessorDefinitions字段中添加;_CRT_SECURE_NO_WARNINGS以關閉這些警告。 ### server代碼 ***** server.cpp ``` #include "pch.h" #include <stdio.h> #include <WinSock2.h> #pragma comment (lib, "WS2_32.lib") #define BUF_SIZE 100 int main() { const char* filename = "E:\\Development\\C++\\Custom\\Network\\TCP\\Server\\Debug\\1.txt";//文件名 const char* t = "rb"; FILE *fp = fopen(filename, t); if (fp == NULL) { printf("Connect open file , press any key exit!\n"); system("pause"); exit(0); } WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); sockAddr.sin_family = PF_INET; sockAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//INADDR_ANY表示任何IP sockAddr.sin_port = htons(1234); bind(servSock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR)); listen(servSock, 20);//監聽狀態 SOCKADDR clntAddr;//接收客戶端請求 int nSize = sizeof(SOCKADDR); SOCKET clntSock = accept(servSock, (SOCKADDR*)&clntAddr, &nSize); char buffer[BUF_SIZE]; //緩沖區 int nCount; while ((nCount = fread(buffer, 1, BUF_SIZE, fp)) > 0) { send(clntSock, buffer, nCount, 0); } shutdown(clntSock, SD_SEND);//文件讀取完畢,斷開輸出流,向客戶端發送fn包 recv(clntSock, buffer, BUF_SIZE, 0);//阻塞,等待客戶端接收完畢 fclose(fp); closesocket(clntSock); //關閉套接字 closesocket(servSock); WSACleanup();//終止DLL; system("pause"); return 0; } ``` ### client 代碼 ***** client.cpp ``` // Client.cpp : 此文件包含 "main" 函數。程序執行將在此處開始并結束。 // #include "pch.h" #include <stdio.h> #include <stdlib.h> #include <WinSock2.h> #include <WS2tcpip.h> #pragma comment(lib, "ws2_32.lib") #define BUF_SIZE 1024 int main() { char filename[100] = {0}; printf("Input filename to save:"); gets_s(filename, 100); FILE * fp = fopen(filename, "wb"); if (fp == NULL) { printf("Connect open file, press any key to exit\n"); system("pause"); exit(0); } WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); SOCKET sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); sockaddr_in sockAddr; memset(&sockAddr, 0, sizeof(sockAddr)); sockAddr.sin_family = PF_INET; sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); sockAddr.sin_port = htons(1234); if (SOCKET_ERROR == connect(sock, (SOCKADDR*)&sockAddr, sizeof(SOCKADDR))) { puts("file transfer success!"); system("pause"); return -1; } puts("Client connect successe!\n"); //connect之后可以進行輸入 char buffer[BUF_SIZE] = { 0 }; int nCount; while (nCount = recv(sock, buffer, BUF_SIZE, 0) > 0) { fwrite(buffer, nCount, nCount, fp); } puts("file transfer success!"); fclose(fp); closesocket(sock); WSACleanup(); system("pause"); return 0; } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看