資源簡介
該資源只是簡單的實現TCP文件的傳輸,僅供初學者,沒有生命太大的技術含量,下載者請注意

代碼片段和文件信息
#include?
#include?
#include?
#define??MAX_DATA_BLOCK_SIZE?8192
void?error_exit(const?char?*?msgint?val);
void?send_file(const?char?*?file_nameconst?char?*?ipu_short?port);
int?main(int?argcchar**?argv){
????u_short?port;
????if(argc==3){
????????send_file(argv[1]argv[2]8888);
????}
????else?if(argc==4){
????????port=(u_short)?atoi(argv[1]);
????????if(port==0){
????????????error_exit(“非法服務器端口“-1);
????????}else{
????????????send_file(argv[1]argv[2]port);
????????}
????}
????else{
????????error_exit(“參數錯誤“-1);
????}
????return?0;
}
void?error_exit(const?char*?msg?int?val){
????if(msg){
????????printf(“%s\n\n“msg);
????????}
????printf(“使用方式:?ft_client<文件名><服務器IP地址>[服務器端口]\n“);
????printf(“服務器端口是可選參數,默認為8888\n\n“);
????exit(val);
}
void?send_file(const?char*?file_nameconst?char*?ip?u_short?port){
????WSADATA?wsaData;
????SOCKET?s;
????FILE?*fp;
????struct?sockaddr_in?server_addr;
????char?data[MAX_DATA_BLOCK_SIZE];
????int?i;
????int?ret;
????fp=fopen(file_name“rb“);
????if(fp==NULL){
????????printf(“無法打開文件\n“);
????????return;
????????}
????WSAStartup(0x202&wsaData);
????s=socket(AF_INETSOCK_STREAM0);
????memset((void?*)&server_addr0sizeof(server_addr));
????server_addr.sin_family=AF_INET;
????server_addr.sin_addr.s_addr=inet_addr(ip);
????server_addr.sin_port=htons(port);
????if(connect(s(struct?sockaddr?*)&server_addrsizeof(struct?sockaddr_in))==SOCKET_ERROR){
????????printf(“連接服務器失敗\n“);
????????fclose(fp);
????????closesocket(s);
????????WSACleanup();
????????return;
????????}
????printf(“發送文件名。。。\n“);
????send(sfile_namestrlen(file_name)0);
????send(s“\0“10);
????printf(“發送文件內容“);
????for(;;){
????????memset((void?*)data0sizeof(data));
????????i=fread(data1sizeof(data)fp);
????????if(i==0){
????????????printf(“\n發送成功\n“);
????????????break;
????????????}
????????ret=send(sdatai0);
????????putchar(‘.‘);
????????if(ret==SOCKET_ERROR){
????????????printf(“\n發送失敗,文件可能不完整\n“);
????????????break;
????????????}
????????}
????fclose(fp);
????closesocket(s);
????WSACleanup();
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????0??2018-11-23?14:23??server\a.txt
?????文件??????????0??2018-11-23?11:26??server\bin\Debug\a.txt
?????文件?????409117??2018-11-23?14:17??server\bin\Debug\server.exe
?????文件???????3749??2018-11-23?13:56??server\main.c
?????文件???????3972??2018-11-23?13:12??server\new.c
?????文件?????389878??2018-11-23?13:57??server\obj\Debug\main.o
?????文件???????1236??2018-11-23?14:48??server\server.cbp
?????文件????????139??2018-11-23?14:15??server\server.depend
?????文件????????539??2018-11-23?14:48??server\server.layout
?????文件????????111??2018-11-23?11:54??test\2.c
?????文件??????????0??2018-11-23?13:21??test\bin\Debug\a.txt
?????文件?????409700??2018-11-23?14:10??test\bin\Debug\test.exe
?????文件???????3990??2018-11-23?14:17??test\main.c
?????文件?????390226??2018-11-23?14:10??test\obj\Debug\main.o
?????文件???????1336??2018-11-23?14:48??test\test.cbp
?????文件????????226??2018-11-23?14:04??test\test.depend
?????文件????????355??2018-11-25?12:55??test\test.layout
?????文件?????????16??2018-11-25?13:17??client\bin\Debug\a.txt
?????文件?????406412??2018-11-23?13:15??client\bin\Debug\client.exe
?????文件???????1123??2018-11-21?17:01??client\client.cbp
?????文件????????125??2018-11-23?13:20??client\client.depend
?????文件????????355??2018-11-25?12:55??client\client.layout
?????文件???????2248??2018-11-23?13:15??client\main.c
?????文件?????388230??2018-11-23?13:15??client\obj\Debug\main.o
?????目錄??????????0??2018-11-23?14:17??server\bin\Debug
?????目錄??????????0??2018-11-23?13:57??server\obj\Debug
?????目錄??????????0??2018-11-23?14:10??test\bin\Debug
?????目錄??????????0??2018-11-23?14:10??test\obj\Debug
?????目錄??????????0??2018-11-23?13:15??client\bin\Debug
?????目錄??????????0??2018-11-23?13:15??client\obj\Debug
............此處省略12個文件信息
評論
共有 條評論