win7系統(tǒng)兩臺(tái)電腦之間利用socket實(shí)現(xiàn)win7局網(wǎng)內(nèi)互相通信文件傳輸
参考
本博客主要实现了简单win7系统下两台电脑之间(客户机与服务器)的文件传输主要是基于网络编程中来实现的当然这个只是简单的实现你可以根据你的需求在你的项目里面进行更改。这里主要实现的通过客户机()通过监听服务器的需求进而向服务器传输指定文件。
操作步骤
(1)首先打开你的cmd控制台查看你的端口号输入命令-ano如下图所示TCP后面红色矩形框就是你部分的端口号。在和这两个文件中将“# 1029“改为你的可用端口号比如“#definePORT 8128“其中8128就是你某个可用端口号。
(2)如果你在同一台电脑上面进行模拟是不用更改IP的当然如果是两台电脑这里就需要更改你的client.cpp和server.cpp这两个文件中#defineSERVER_IP“127.0.0.1”更改为你的Server服务器IP地址查看你IP地址的方法为打开你的打开你的cmd控制台输入命令ipconfig
(3)然后新建两个工程即可分别添加下面两个源文件先运行客户端代码然后运行服务器代码输入想要接收客户端的文件名就可以在你的服务器工程下接收到相应的文件。
服务器代码
server.cpp
/*************************************************************************FileName:Win_Server.cAuthor:SongLee************************************************************************/#includestdio.h#includestdlib.h#includestring.h#includeWinSock2.h//#definePORT8082#definePORT1029//需要更改你可用的端口#defineSERVER_IP127.0.0.1#defineBUFFER_SIZE1024#defineFILE_NAME_MAX_SIZE512#pragmacomment(lib,WS2_32)intmain(){//声明并初始化一个服务端(本地)的地址结构sockaddr_inserver_addr;server_addr.sin_familyAF_INET;server_addr.sin_addr.S_un.S_addrINADDR_ANY;server_addr.sin_porthtons(PORT);//初始化socketdllWSADATAwsaData;WORDsocketVersionMAKEWORD(2,0);if(WSAStartup(socketVersion,wsaData)!0){printf(Initsocketdllerror!exit(1);}//创建socketSOCKETm_Socketsocket(AF_INET,SOCK_STREAM,0);if(SOCKET_ERRORm_Socket){printf(CreateSocketError!exit(1);}//绑定socket和服务端(本地)地址if(SOCKET_ERRORbind(m_Socket,(LPSOCKADDR)server_addr,sizeof(server_addr))){printf(ServerBindFailed:%d,WSAGetLastError());exit(1);}//监听if(SOCKET_ERRORlisten(m_Socket,10)){printf(ServerListenFailed:%d,WSAGetLastError());exit(1);}while(1){printf(ListeningToServer...
//监听服务器需求sockaddr_inclient_addr;intclient_addr_lensizeof(client_addr);SOCKETm_New_Socketaccept(m_Socket,(sockaddr*)client_addr,client_addr_len);if(SOCKET_ERRORm_New_Socket){printf(ServerAcceptFailed:%d,WSAGetLastError());break;}charbuffer[BUFFER_SIZE];memset(buffer,0,BUFFER_SIZE);if(recv(m_New_Socket,buffer,BUFFER_SIZE,0)0){printf(ClientReceiveDataFailed!break;}charfile_name[FILE_NAME_MAX_SIZE1];memset(file_name,0,FILE_NAME_MAX_SIZE1);strncpy(file_name,buffer,strlen(buffer)FILE_NAME_MAX_SIZE?FILE_NAME_MAX_SIZE:strlen(buffer));printf(%s
,file_name);FILE*fpfopen(file_name,rb//windows下是rb,表示打开一个只读的二进制文件if(NULLfp){printf(File:%sNotFound
,file_name);}else{memset(buffer,0,BUFFER_SIZE);intlength0;while((lengthfread(buffer,sizeof(char),BUFFER_SIZE,fp))0){if(send(m_New_Socket,buffer,length,0)0){printf(SendFile:%sFailed
,file_name);break;}memset(buffer,0,BUFFER_SIZE);}fclose(fp);printf(File:%sTransferSuccessful!
,file_name);}closesocket(m_New_Socket);}closesocket(m_Socket);//释放winsock库WSACleanup();return0;}
客户机代码
client.cpp
/*************************************************************************FileName:Win_Client.cAuthor:SongLee************************************************************************/#includestdio.h#includestdlib.h#includestring.h#includeWinSock2.h//#definePORT8082#definePORT1029//需要更改你可用的端口#defineSERVER_IP127.0.0.1#defineBUFFER_SIZE1024#defineFILE_NAME_MAX_SIZE512#pragmacomment(lib,WS2_32)intmain(){//初始化socketdllWSADATAwsaData;WORDsocketVersionMAKEWORD(2,0);if(WSAStartup(socketVersion,wsaData)!0){printf(Initsocketdllerror!exit(1);}while(1){//创建socketSOCKETc_Socketsocket(AF_INET,SOCK_STREAM,0);if(SOCKET_ERRORc_Socket){printf(CreateSocketError!system(pauseexit(1);}//指定服务端的地址sockaddr_inserver_addr;server_addr.sin_familyAF_INET;server_addr.sin_addr.S_un.S_addrinet_addr(SERVER_IP);server_addr.sin_porthtons(PORT);if(SOCKET_ERRORconnect(c_Socket,(LPSOCKADDR)server_addr,sizeof(server_addr))){printf(CanNotConnectToClientIP!
system(pauseexit(1);}//输入文件名charfile_name[FILE_NAME_MAX_SIZE1];memset(file_name,0,FILE_NAME_MAX_SIZE1);printf(PleaseInputFileNameOnClient:scanf(%s,file_name);charbuffer[BUFFER_SIZE];memset(buffer,0,BUFFER_SIZE);strncpy(buffer,file_name,strlen(file_name)BUFFER_SIZE?BUFFER_SIZE:strlen(file_name));//向服务器发送文件名if(send(c_Socket,buffer,BUFFER_SIZE,0)0){printf(SendFileNameFailed
system(pauseexit(1);}//打开文件准备写入FILE*fpfopen(file_name,wb//windows下是wb,表示打开一个只写的二进制文件if(NULLfp){printf(File:%sCanNotOpenToWrite
,file_name);system(pauseexit(1);}else{memset(buffer,0,BUFFER_SIZE);intlength0;while((lengthrecv(c_Socket,buffer,BUFFER_SIZE,0))0){if(fwrite(buffer,sizeof(char),length,fp)length){printf(File:%sWriteFailed
,file_name);break;}memset(buffer,0,BUFFER_SIZE);}printf(ReceiveFile:%sFromClientSuccessful!
,file_name);}fclose(fp);closesocket(c_Socket);}//释放winsock库WSACleanup();system(pausereturn0;}
推薦系統(tǒng)
雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:WinXP雨林木風(fēng)在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國(guó)內(nèi)重裝系統(tǒng)行業(yè)知名品牌,雨林木風(fēng)WindowsXP其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,是一款穩(wěn)定流暢的系統(tǒng),雨林木風(fēng) winxp下載 純凈版 永久激活 winxp ghost系統(tǒng) sp3 系統(tǒng)下載,有需要的朋友速度下載吧。
系統(tǒng)等級(jí):進(jìn)入下載 >蘿卜家園win7純凈版 ghost系統(tǒng)下載 x64 聯(lián)想電腦專用
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win7蘿卜家園win7純凈版是款非常純凈的win7系統(tǒng),此版本優(yōu)化更新了大量的驅(qū)動(dòng),幫助用戶們進(jìn)行舒適的使用,更加的適合家庭辦公的使用,方便用戶,有需要的用戶們快來下載安裝吧。
系統(tǒng)等級(jí):進(jìn)入下載 >雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載
系統(tǒng)大?。?/em>1.01GB系統(tǒng)類型:WinXP雨林木風(fēng)xp系統(tǒng) xp系統(tǒng)純凈版 winXP ghost xp sp3 純凈版系統(tǒng)下載,雨林木風(fēng)WinXP系統(tǒng)技術(shù)積累雄厚深耕多年,采用了新的系統(tǒng)功能和硬件驅(qū)動(dòng),可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動(dòng)對(duì)硬件的加速,加固了系統(tǒng)安全策略,運(yùn)行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級(jí):進(jìn)入下載 >蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 V2023 X64位系統(tǒng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win10蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國(guó)內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,(win10企業(yè)版,win10 ghost,win10鏡像),蘿卜家園win10企業(yè)版 免激活密鑰 激活工具 ghost鏡像 X64位系統(tǒng)下載,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團(tuán)隊(duì)推出的蘿卜家園
系統(tǒng)等級(jí):進(jìn)入下載 >蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 V2023 X64位系統(tǒng)下載
系統(tǒng)大?。?/em>0MB系統(tǒng)類型:Win10蘿卜家園windows10游戲版 win10游戲?qū)I(yè)版 ghost X64位 系統(tǒng)下載,蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,打造了國(guó)內(nèi)重裝系統(tǒng)行業(yè)的蘿卜家園品牌,其系統(tǒng)口碑得到許多人認(rèn)可,積累了廣大的用戶群體,蘿卜家園win10純凈版是一款穩(wěn)定流暢的系統(tǒng),一直以來都以用戶為中心,是由蘿卜家園win10團(tuán)隊(duì)推出的蘿卜家園win10國(guó)內(nèi)鏡像版,基于國(guó)內(nèi)用戶的習(xí)慣,做
系統(tǒng)等級(jí):進(jìn)入下載 >windows11下載 蘿卜家園win11專業(yè)版 X64位 V2023官網(wǎng)下載
系統(tǒng)大小:0MB系統(tǒng)類型:Win11蘿卜家園在系統(tǒng)方面技術(shù)積累雄厚深耕多年,windows11下載 蘿卜家園win11專業(yè)版 X64位 官網(wǎng)正式版可以更好的發(fā)揮系統(tǒng)的性能,優(yōu)化了系統(tǒng)、驅(qū)動(dòng)對(duì)硬件的加速,使得軟件在WINDOWS11系統(tǒng)中運(yùn)行得更加流暢,加固了系統(tǒng)安全策略,WINDOWS11系統(tǒng)在家用辦公上跑分表現(xiàn)都是非常優(yōu)秀,完美的兼容各種硬件和軟件,運(yùn)行環(huán)境安全可靠穩(wěn)定。
系統(tǒng)等級(jí):進(jìn)入下載 >
相關(guān)文章
- 有什么電腦自動(dòng)關(guān)機(jī)軟件好用 電腦自動(dòng)關(guān)機(jī)軟件下載推薦
- 微信抽獎(jiǎng)小程序怎么弄,教你微信轉(zhuǎn)盤抽獎(jiǎng)小程序制作方法
- 收集意見建議小程序怎么弄,教你制作匿名收集意見的小程序
- 掃碼助力活動(dòng)怎么弄,微信公眾號(hào)助力活動(dòng)的制作步驟
- 海報(bào)裂變活動(dòng)怎么弄,微信公眾號(hào)生成海報(bào)裂變活動(dòng)的方法
- 公眾號(hào)推廣二維碼怎么弄,微信公眾號(hào)推廣二維碼生成方法
- 公眾號(hào)裂變活動(dòng)制作,微信公眾號(hào)怎么做裂變活動(dòng)
- 登記信息二維碼制作,如何實(shí)現(xiàn)掃碼登記填報(bào)信息
- 登記表怎么弄,教你微信登記表格怎么做
- 參數(shù)二維碼怎么弄,微信公眾號(hào)帶參數(shù)二維碼怎么生成
- 報(bào)名二維碼怎么弄,微信公眾號(hào)報(bào)名二維碼制作步驟
- 設(shè)置電腦定時(shí)關(guān)機(jī)命令如何更改 電腦定時(shí)關(guān)機(jī)命令設(shè)置方法詳解
- win7怎么自動(dòng)關(guān)機(jī) win7自動(dòng)關(guān)機(jī)時(shí)間設(shè)置方法
- 設(shè)置定時(shí)關(guān)機(jī)命令在哪 電腦設(shè)置定時(shí)關(guān)機(jī)命令
熱門系統(tǒng)
推薦軟件
推薦應(yīng)用
推薦游戲
熱門文章
常用系統(tǒng)
- 1win11最新娛樂版下載 技術(shù)員聯(lián)盟x64位 ghost系統(tǒng) ISO鏡像 v2023
- 2電腦公司windows7純凈版 ghost x64位 v2022.05 官網(wǎng)鏡像下載
- 3外星人系統(tǒng)Win11穩(wěn)定版系統(tǒng)下載 windows11 64位穩(wěn)定版Ghost V2022
- 4win11一鍵裝機(jī)小白版下載 外星人系統(tǒng) x64位純凈版下載 筆記本專用
- 5蘿卜家園Ghost win10 64位中文版專業(yè)版系統(tǒng)下載 windows10純凈專業(yè)版下載
- 6【國(guó)慶特別版】番茄花園Windows11高性能專業(yè)版ghost系統(tǒng) ISO鏡像下載
- 7青蘋果系統(tǒng) GHOST WIN7 SP1 X64 專業(yè)優(yōu)化版 V2024
- 8深度技術(shù)ghost win7純凈版最新下載 大神裝機(jī)版 ISO鏡像下載
- 9雨林木風(fēng)windows11中文版免激活 ghost鏡像 V2022.04下載