基于TCP协议的C/S传输文件C++)


使用C++语言编写基于TCP协议的C/S传输文件。具体使用方法见里面的report。
资源截图
代码片段和文件信息
#include 
#include 
#include 
#include 
#include 

#define PORT 2680
#define BUFFER_SIZE 1024
#define MAXLINE 512

#pragma comment(lib “WS2_32“)

int main()
{
    int recvTimeout = 1000;
    char c = 0;
    int nNetTimeout = 1000;
    WSADATA wsdata;
    WORD v = MAKEWORD(20);
    char IP[32];
    SOCKET ConnectSocket = INVALID_SOCKET;
    int len = 0;
    char filename[MAXLINE+1];
    // Initialize Winsock
    if( WSAStartup(v &wsdata) != 0)
    {
        printf(“WSAStartup failed with error: %d
“ WSAStartup(v &wsdata));
        return 1;
    }

    sockaddr_in server_addr client_addr;
    int size  = sizeof(client_addr);
    server_addr.sin_family = AF_INET;
    printf(“Please input the IP address:“);
    scanf(“%s“ &IP);
    server_addr.sin_addr.S_un.S_addr = inet_addr(IP);
    server_addr.sin_port = htons(PORT);//htons transfer to u_short

    // Create a SOCKET for connecting to server
    ConnectSocket = socket(AF_INET SOCK_STREAM 0);
    if (ConnectSocket == INVALID_SOCKET)
    {
        printf(“socket failed with error: %ld
“ WSAGetLastError());
        WSACleanup();
        return 1;
    }
    //connect
    if (SOCKET_ERROR == connect(ConnectSocket (sockaddr *)&server_addr sizeof(server_addr)))
    {
        printf(“Unable to connect to server!
“);
        WSACleanup();
        return 1;
    }
    char str[20] = ““;
    recv(ConnectSocket str sizeof(str) 0);
    printf(“server:%s“ str);

    char buffer[BUFFER_SIZE];
    while(c != 27)
    {
        memset(filename 0 MAXLINE+1);
        printf(“
please input the file name in the server:“);
        scanf(“%s“&filename);

        memset(buffer 0 BUFFER_SIZE);
        strncpy(buffer filenamestrlen(filename)>BUFFER_SIZE ? BUFFER_SIZE:strlen(filename));

        // Send an initial buffer
        if(send(ConnectSocket buffer BUFFER_SIZE 0) == SOCKET_ERROR)
        {
            printf(“send failed with error: %d
“ WSAGetLastError());
            closesocket(ConnectSocket);
            WSACleanup();
            return 1;
        }
        //open the file to write
        FILE *fp = fopen(filename “wb“);
        memset(buffer 0 BUFFER_SIZE);
        setsockopt(ConnectSocket SOL_SOCKET SO_RCVTIMEO (char *)&recvTimeout sizeof(int));
        len = recv(ConnectSocket buffer BUFFER_SIZE 0);
  //     int length = fwrite(buffer sizeof(char) len fp);
  //    fflush(fp);
        if (len == -1)
        {
            printf(“can not find the file
“);
        }
        else if(fp == NULL)
        {
            printf(“can not open to write the file %s
“filename);
            return 0;
        }
        else
        {
            int length = 0;
            length = recv(ConnectSocket buffer BUFFER_SIZE 0);
            if (fwrite(buffer sizeof(char) length fp) < length)
            {
    //            fflush(fp

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-10 16:20  assign4-516111910213
     目录           0  2018-11-05 23:28  assign4-516111910213client2
     目录           0  2018-11-01 22:13  assign4-516111910213client2in
     目录           0  2018-11-01 22:13  assign4-516111910213client2inDebug
     文件       35471  2018-11-01 21:51  assign4-516111910213client2inDebugclient2.exe
     文件        1145  2018-11-01 22:13  assign4-516111910213client2client2.cbp
     文件         317  2018-11-05 21:13  assign4-516111910213client2client2.depend
     文件         241  2018-11-05 23:28  assign4-516111910213client2client2.layout
     文件        4717  2018-11-01 21:51  assign4-516111910213client2main.cpp
     目录           0  2018-11-01 22:13  assign4-516111910213client2obj
     目录           0  2018-11-01 22:13  assign4-516111910213client2objDebug
     文件        7131  2018-11-01 21:51  assign4-516111910213client2objDebugmain.o
     文件      439926  2018-11-10 16:20  assign4-516111910213
eport.pdf
     目录           0  2018-11-01 22:16  assign4-516111910213server2
     文件        9728  2018-11-01 19:59  assign4-516111910213server2123.doc
     文件       85072  2016-08-08 14:12  assign4-516111910213server2CYVW3880.jpg
     文件      126208  2018-10-19 21:14  assign4-516111910213server2assign4.pdf
     目录           0  2018-11-01 22:13  assign4-516111910213server2in
     目录           0  2018-11-01 22:13  assign4-516111910213server2inDebug
     文件       34488  2018-11-01 21:45  assign4-516111910213server2inDebugserver2.exe
     文件        3680  2018-11-01 21:45  assign4-516111910213server2main.cpp
     文件     1308294  2018-06-24 15:38  assign4-516111910213server2
ba.gif
     目录           0  2018-11-01 22:13  assign4-516111910213server2obj
     目录           0  2018-11-01 22:13  assign4-516111910213server2objDebug
     文件        6397  2018-11-01 21:45  assign4-516111910213server2objDebugmain.o
     文件        1145  2018-11-01 22:13  assign4-516111910213server2server2.cbp
     文件         139  2018-11-01 21:46  assign4-516111910213server2server2.depend
     文件         239  2018-11-01 22:16  assign4-516111910213server2server2.layout
     文件          28  2018-10-30 16:12  assign4-516111910213server2 est.txt
     文件           5  2018-10-30 19:10  assign4-516111910213server2 est2.txt
     文件           5  2018-11-01 13:51  assign4-516111910213server2 est3.txt
............此处省略0个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)