資源簡(jiǎn)介
用VC6.0編寫(xiě)的基于TCP協(xié)議的簡(jiǎn)單控制臺(tái)文件傳輸程序,適合Windows Socket編程的初學(xué)者參考。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
using?namespace?std;
void?main()
{
int?err;?
int?len=sizeof(SOCKADDR);
char?sendWord[200]=“服務(wù)端已收到消息!“;
char?recvWord[200];
string?s;
ifstream?inf;
????//////////////創(chuàng)建套接字庫(kù)///////////////
WORD?wVersionRequested;
WSADATA?wsaData;
wVersionRequested?=?MAKEWORD(?2?2?);
?
err?=?WSAStartup(?wVersionRequested?&wsaData?);
if?(?err?!=?0?)?{
return;
}
?
if?(?LOBYTE(?wsaData.wVersion?)?!=?2?||
HIBYTE(?wsaData.wVersion?)?!=?2?)?{
WSACleanup(?);
return;?
}
???
///////////////創(chuàng)建套接字//////////////////////
SOCKET?SockSrv=socket(AF_INETSOCK_STREAM0);?????//SOCK_STREAM為使用TCP協(xié)議,SOCK_DGRAM為使用UDP協(xié)議
SOCKADDR_IN?addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;????????
addrSrv.sin_port=htons(6530);?????//指定端口
/////////////綁定套接字//////////////////////
bind(SockSrv(SOCKADDR*)&addrSrvlen);
/////////////開(kāi)始監(jiān)聽(tīng)//////////////////////
if(0==listen(SockSrv2))
cout<<“正在監(jiān)聽(tīng)...“< else?{
cout<<“監(jiān)聽(tīng)失敗!“< return;
}
SOCKADDR_IN?addrCli;
//////////////發(fā)送文件//////////////////
while(1)
{
inf.open(“1.txt“ios_base::in);
SOCKET?SockCli=accept(SockSrv(SOCKADDR*)&addrCli&len);
cout<<“客戶端已連接“;
Sleep(3000);
while(recv(SockClirecvWordstrlen(recvWord)+10)!=SOCKET_ERROR)
{
inf.getline(sendWord200);????????????//txt文件中必須每行都包括了回車(chē)
if(!inf.eof())?????????????//判斷文件是否到達(dá)文件末尾
{
system(“CLS“);?????????????//清屏
cout<<“正在發(fā)送...“< send(SockClisendWordstrlen(sendWord)+10);
}
else
{
cout<<“文件成功發(fā)送!“< send(SockCli“END“strlen(“END“)+10);?????//給客戶端發(fā)送消息示意發(fā)送完成
break;
}
}
inf.clear();???????//////////////調(diào)用clear()以便服務(wù)端可繼續(xù)為接下來(lái)連接的客戶端發(fā)送文件
inf.close();???????///////////////關(guān)閉文件
}
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-10-14?19:50??MyTcp\
?????目錄???????????0??2011-10-14?19:50??MyTcpCli\
?????目錄???????????0??2011-10-14?19:50??MyTcpCli\TcpCli\
?????文件????????1250??2011-10-14?19:30??MyTcpCli\TcpCli\1.txt
?????目錄???????????0??2011-10-14?19:50??MyTcpCli\TcpCli\Debug\
?????文件??????540736??2011-10-14?19:45??MyTcpCli\TcpCli\Debug\TcpCli.exe
?????文件??????800268??2011-10-14?19:45??MyTcpCli\TcpCli\Debug\TcpCli.ilk
?????文件??????175466??2011-10-14?19:45??MyTcpCli\TcpCli\Debug\TcpCli.obj
?????文件?????5505276??2011-10-14?17:27??MyTcpCli\TcpCli\Debug\TcpCli.pch
?????文件?????1131520??2011-10-14?19:45??MyTcpCli\TcpCli\Debug\TcpCli.pdb
?????文件??????189440??2011-10-14?19:48??MyTcpCli\TcpCli\Debug\vc60.idb
?????文件??????143360??2011-10-14?19:45??MyTcpCli\TcpCli\Debug\vc60.pdb
?????文件????????1799??2011-10-14?19:44??MyTcpCli\TcpCli\TcpCli.cpp
?????文件????????4317??2011-10-14?19:50??MyTcpCli\TcpCli\TcpCli.dsp
?????文件?????????246??2011-10-14?19:48??MyTcpCli\TcpCli\TcpCli.plg
?????文件????????1250??2011-10-14?19:18??MyTcp\1.txt
?????目錄???????????0??2011-10-14?19:50??MyTcp\Debug\
?????文件???????38111??2011-10-06?11:37??MyTcp\Debug\1.txt
?????文件????????9573??2011-10-06?11:37??MyTcp\Debug\2.txt
?????文件???????49683??2011-10-06?11:38??MyTcp\Debug\3.txt
?????文件??????557109??2011-10-14?19:45??MyTcp\Debug\MyTcp.exe
?????文件??????821588??2011-10-14?19:45??MyTcp\Debug\MyTcp.ilk
?????文件?????5505276??2011-10-14?18:31??MyTcp\Debug\MyTcp.pch
?????文件?????1139712??2011-10-14?19:45??MyTcp\Debug\MyTcp.pdb
?????文件??????209383??2011-10-14?19:45??MyTcp\Debug\tcpip.obj
?????文件??????205824??2011-10-14?19:45??MyTcp\Debug\vc60.idb
?????文件??????143360??2011-10-14?19:45??MyTcp\Debug\vc60.pdb
?????文件????????4305??2011-10-14?19:50??MyTcp\MyTcp.dsp
?????文件?????????724??2011-10-06?11:40??MyTcp\MyTcp.dsw
?????文件???????50176??2011-10-14?19:50??MyTcp\MyTcp.ncb
?????文件???????53760??2011-10-14?19:50??MyTcp\MyTcp.opt
............此處省略2個(gè)文件信息
評(píng)論
共有 條評(píng)論