• 大小: 43.71MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-08
  • 语言: 其他
  • 标签: 计网  实验报告  

资源简介

华南理工大学计算机网络小班教学实验报告2-4,实验时间是2019 实验二 网络报文抓取与分析 实验三 路由器的基本操作 实验四 组网实验

资源截图

代码片段和文件信息

/*

Socket客户端代码

服务器127.0.0.1通信,端口8888

建立连接后,发送给服务器,需要传输的文件路径

若文件路径存在,接收服务器发送的文件流,发送完毕则关闭连接。

*/



#include 

#include 

#include 

#include   

#include   

#include 



#pragma comment(lib“ws2_32.lib“)



#define BUFFER_SIZE 2048

#define FILE_NAME_MAX_SIZE 512 



int main(int argc char* argv[])

{

/*

初始化WSA,使得程序可以调用windows socket

*/

WORD sockVersion = MAKEWORD(2 2);

WSADATA wsaData;

if (WSAStartup(sockVersion &wsaData) != 0)

{

return 0;

}



/*

创建监听用套接字,server_socket

并检测是否创建成功

*/

SOCKET client_socket = socket(AF_INET SOCK_STREAM IPPROTO_TCP); ;

if (client_socket == INVALID_SOCKET) {

//如果创建的socket无效,则结束程序

perror(“socket error !“);

return 0;

}



/*

创建地址结构,server_addr,并设置端口和IP

*/

sockaddr_in server_addr;

memset(&server_addr 0 sizeof(server_addr));

server_addr.sin_family = AF_INET;

//要连接的服务器端口号 8888

server_addr.sin_port = htons(8888);

//指定服务器的地址127.0.0.1

InetPton(AF_INET “127.0.0.1“ &server_addr.sin_addr.s_addr);



//与地址server_addr建立连接

if (connect(client_socket (SOCKADDR*)&server_addr sizeof(SOCKADDR)))

{

perror(“connect error !\n“);

return 0;

}



char REMOTE_file_name[FILE_NAME_MAX_SIZE + 1];

memset(REMOTE_file_name 0 FILE_NAME_MAX_SIZE + 1);

printf(“请输入要获取的服务器文件路径:\n“);

scanf_s(“%s“ REMOTE_file_name FILE_NAME_MAX_SIZE);



char LOCAL_file_name[FILE_NAME_MAX_SIZE + 1];

memset(LOCAL_file_name 0 FILE_NAME_MAX_SIZE + 1);

printf(“请输入保存文件的本地路径:\n“);

scanf_s(“%s“ LOCAL_file_name FILE_NAME_MAX_SIZE);



char buffer[BUFFER_SIZE];

memset(buffer 0 BUFFER_SIZE);

strncpy_s(buffer REMOTE_file_name strlen(REMOTE_file_name) > BUFFER_SIZE ? BUFFER_SIZE : strlen(REMOTE_file_name));



// 向服务器发送buffer中的数据 

if (send(client_socket buffer BUFFER_SIZE 0) < 0)

{

perror(“发送文件名失败:“);

exit(1);

}



// 打开文件,准备写入 

FILE *fp;

errno_t F_ERR = fopen_s(&fp LOCAL_file_name “wb“);

if (F_ERR != 0)

{

printf(“文件打开失败:%s\n“ LOCAL_file_name);

exit(1);

}



// 从服务器接收数据到buffer中 

// 每接收一段数据,便将其写入文件中,循环直到文件接收完并写完为止 

memset(buffer 0 BUFFER_SIZE);

int length = 0;

while ((length = recv(client_socket buffer BUFFER_SIZE 0)) > 0)

{

if (fwrite(buffer sizeof(char) length fp) < length)

{

printf(“文件写入失败:%s\n“ LOCAL_file_name);

break;

}

memset(buffer 0 BUFFER_SIZE);

}



printf(“\n成功从服务器接收文件\n存入本地目录:%s\n“ REMOTE_file_name LOCAL_file_name);





// 接收成功后,关闭文件,关闭socket、WSA 

fclose(fp);

closesocket(client_socket);

WSACleanup();

system(“pause“);

return 0;



}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2019-07-11 18:28  计网实验\
     文件     1169268  2019-07-11 11:08  计网实验\计网实验3.doc
     文件      700671  2019-07-11 11:07  计网实验\计网实验4.doc
     文件      394943  2019-07-11 11:07  计网实验\计网实验2.docx
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\.vs\
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\.vs\PCT_Client\
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\.vs\PCT_Client\v15\
     文件       18944  2019-06-29 01:13  计网实验\PCT_Client\.vs\PCT_Client\v15\.suo
     文件    34066432  2019-06-29 01:13  计网实验\PCT_Client\.vs\PCT_Client\v15\Browse.VC.db
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\.vs\PCT_Client\v15\ipch\
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\.vs\PCT_Client\v15\ipch\AutoPCH\
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\.vs\PCT_Client\v15\ipch\AutoPCH\ed9a692236ba195b\
     文件    44630016  2019-06-29 00:27  计网实验\PCT_Client\.vs\PCT_Client\v15\ipch\AutoPCH\ed9a692236ba195b\源.ipch
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\Debug\
     文件       41472  2019-06-29 00:28  计网实验\PCT_Client\Debug\PCT_Client.exe
     文件      375380  2019-06-29 00:28  计网实验\PCT_Client\Debug\PCT_Client.ilk
     文件      471040  2019-06-29 00:28  计网实验\PCT_Client\Debug\PCT_Client.pdb
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\PCT_Client\
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\PCT_Client\Debug\
     文件         487  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.log
     目录           0  2019-06-29 13:18  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\
     文件         660  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\CL.command.1.tlog
     文件       26886  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\CL.read.1.tlog
     文件         504  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\CL.write.1.tlog
     文件         213  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\PCT_Client.lastbuildstate
     文件        1158  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\link.command.1.tlog
     文件        3794  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\link.read.1.tlog
     文件         488  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\PCT_Client.tlog\link.write.1.tlog
     文件      248832  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\vc141.idb
     文件      143360  2019-06-29 00:28  计网实验\PCT_Client\PCT_Client\Debug\vc141.pdb
............此处省略44个文件信息

评论

共有 条评论