資源簡(jiǎn)介
Socket實(shí)現(xiàn)文件上傳下載,包含服務(wù)器和客戶端實(shí)現(xiàn),服務(wù)店采用多線程實(shí)現(xiàn)

代碼片段和文件信息
#include?
#include??//windows?socket的頭文件
#include?
#include?
#include?
#include?
#pragma?comment(lib?“ws2_32.lib“)?//連接winsock2.h的靜態(tài)庫(kù)文件
using?namespace?std;
int?main()
{
????//加載winsock庫(kù)
????WSADATA?wsadata;
????WSAStartup(MAKEWORD(2?3)?&wsadata);
????//客戶端socket
????SOCKET?clientSock?=?socket(PF_INET?SOCK_STREAM?0);
????//初始化socket信息
????sockaddr_in?clientAddr;
????memset(&clientAddr?0?sizeof(SOCKADDR));
????//clientAddr.sin_addr.s_addr?=?htonl(INADDR_ANY);
????clientAddr.sin_addr.s_addr?=?inet_addr(“127.0.0.1“);
????clientAddr.sin_family?=?PF_INET;
????clientAddr.sin_port?=?htons(2017);
????//建立連接
????int?net?=?connect(clientSock?(SOCKADDR*)&clientAddr?sizeof(SOCKADDR));
????if?(net?==?-1)
????{
????????cout?<“連接失敗,請(qǐng)檢查服務(wù)器。“?<????????return?-1;
????}else{
????????cout?<“已建立連接。“?<????}
????/*
????char*?s?=?new?char[100];
????cout?<“請(qǐng)輸入你要發(fā)送的文字消息:?“;
????cin?>>?s;
????send(clientSock?s?strlen(s)*sizeof(char)?+?1?NULL);
????cout?<“已發(fā)送:“?<????*/
????char?Buffer[MAXBYTE]?=?{?0?};?//?文件緩沖區(qū)
????char*?wb_file?=?“D:\\111.GTB4“;?//寫入的文件
????FILE?*fp?=?fopen(wb_file?“wb“);
????if?(fp?==?NULL)
????{
????????cout?<“操作文件時(shí)出錯(cuò)“?<????????system(“pause“);
????}
????else
????{
????????memset(&Buffer?0?MAXBYTE);
????????int?size?=?0;
????????//當(dāng)成功接收文件(size?>?0)時(shí),判斷寫入的時(shí)候文件長(zhǎng)度是否等于接收的長(zhǎng)度
????????while?((size?=?recvfrom(clientSock?Buffer?MAXBYTE?0?0?0)))
????????{
????????????cout?<????????????if?(size?>?0)
????????????{
????????????????if?(fwrite(Buffer?sizeof(char)?size?fp)?????????????????{
????????????????????cout?<“寫入出錯(cuò),部分文件缺失。“?<????????????????}
????????????????//清空緩存區(qū)以便下一次接收
????????????????memset(&Buffer?0?MAXBYTE);
????????????}?else?if?((0?==?size)?||?(-1?==?size))
????????????{
????????????????break;
????????????}
????????}
????????cout?<“接收完成“?<????????fclose(fp);
????}
????closesocket(clientSock);
????WSACleanup();
????cout?<“客戶端連接已關(guān)閉。“?<????system(“pause“);
????return?0;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????32256??2018-11-16?16:26??SocketDemo\Client\64D\debug\Client.exe
?????文件????????638??2018-11-16?16:26??SocketDemo\Client\64D\debug\Client.exe.em
?????文件????????100??2018-11-16?16:26??SocketDemo\Client\64D\debug\Client.exe_manifest.rc
?????文件????????704??2018-11-16?01:15??SocketDemo\Client\64D\debug\Client.exe_manifest.res
?????文件?????677896??2018-11-16?16:26??SocketDemo\Client\64D\debug\Client.ilk
?????文件????1028096??2018-11-16?16:26??SocketDemo\Client\64D\debug\client.pdb
?????文件??????89043??2018-11-16?16:26??SocketDemo\Client\64D\debug\main.obj
?????文件??????23909??2018-11-16?01:30??SocketDemo\Client\64D\Makefile
?????文件??????19065??2018-11-16?01:30??SocketDemo\Client\64D\Makefile.Debug
?????文件??????18120??2018-11-16?01:30??SocketDemo\Client\64D\Makefile.Release
?????文件????????907??2018-11-16?01:21??SocketDemo\Client\Client.pro
?????文件??????23965??2018-11-16?16:33??SocketDemo\Client\Client.pro.user
?????文件???????2339??2018-11-16?16:25??SocketDemo\Client\main.cpp
?????文件?????120181??2018-11-16?15:18??SocketDemo\Server\64D\debug\main.obj
?????文件??????51712??2018-11-16?15:18??SocketDemo\Server\64D\debug\Server.exe
?????文件????????638??2018-11-16?15:18??SocketDemo\Server\64D\debug\Server.exe.em
?????文件????????100??2018-11-16?15:18??SocketDemo\Server\64D\debug\Server.exe_manifest.rc
?????文件????????704??2018-11-16?01:14??SocketDemo\Server\64D\debug\Server.exe_manifest.res
?????文件?????728032??2018-11-16?15:18??SocketDemo\Server\64D\debug\Server.ilk
?????文件????1118208??2018-11-16?15:18??SocketDemo\Server\64D\debug\server.pdb
?????文件??????23909??2018-11-16?01:17??SocketDemo\Server\64D\Makefile
?????文件??????19065??2018-11-16?01:17??SocketDemo\Server\64D\Makefile.Debug
?????文件??????18120??2018-11-16?01:17??SocketDemo\Server\64D\Makefile.Release
?????文件???????4067??2018-11-16?09:30??SocketDemo\Server\main.cpp
?????文件????????907??2018-11-16?01:13??SocketDemo\Server\Server.pro
?????文件??????23965??2018-11-16?19:28??SocketDemo\Server\Server.pro.user
?????目錄??????????0??2018-11-16?16:26??SocketDemo\Client\64D\debug
?????目錄??????????0??2018-11-16?01:15??SocketDemo\Client\64D\release
?????目錄??????????0??2018-11-16?15:18??SocketDemo\Server\64D\debug
?????目錄??????????0??2018-11-16?01:14??SocketDemo\Server\64D\release
............此處省略8個(gè)文件信息
評(píng)論
共有 條評(píng)論