資源簡介
1. 將Server目錄下的Server.cpp中第58行到61行的IP地址改為本機實際的IP地址。2. 編譯Server.cpp并運行。在命令行方式下運行。程序無輸出,保持其運行,等待Client連接。3. Client目錄下的Client.cpp不需修改,可以直接編譯。但因為有命令行參數,所以不能直接在VC中運行,需要在命令行方式下運行。命令格式為: client 服務器IP地址 3000也可將Debug目錄下的批處理文件run.bat修改后雙擊運行。此時,Client顯示“發送成功”,Server顯示“連接中止......”。

代碼片段和文件信息
//?Client.cpp?:?Defines?the?entry?point?for?the?console?application.
//
#include?“stdafx.h“
#include?“stdio.h“
#include?“Winsock2.h“
#define?DATA?“hello?world!“
void?main(int?argc?char*?argv[])
{
int?sockid;//Socket號
struct?sockaddr_in?server_addr;//服務器的地址結構
struct?hostent?*hp;//主機信息的結構
////////第一步,版本協商
WORD?wVersionRequested;//需要的版本號
WSADATA?wsaData;//協商時使用的變量
//使要求的版本為2.1
int?err;
//設置需要的版本號為2.1
wVersionRequested=MAKEWORD(12);
//啟動socket
err=WSAStartup(wVersionRequested&wsaData);
//用戶沒有找到一個可以使用的DLL,返回
if(err!=0)
{
perror(“無DLL可用“);
}
//確保Windows?Sockets?Dll支持2.1
if((LOBYTE(wsaData.wVersion)!=1)||(HIBYTE(wsaData.wHighVersion)!=2))
{
perror(“無正確的DLL“);
WSACleanup();
return;
}
////////第二步,建立socket
sockid=socket(AF_INETSOCK_STREAM0);
if(sockid<0)
{
perror(“建立套接字失敗“);
return;
}
//建立地址域
server_addr.sin_family=AF_INET;
//得到命令行中指定的服務器的名字
hp=gethostbyname(argv[1]);
if(hp==0)
{
//沒有可以得到的信息,程序不能繼續執行
return;
}
memcpy((char*)&server_addr.sin_addr(char*)hp->h_addr?hp->h_length);
//得到命令行中指定的服務器提供的端口號
server_addr.sin_port=htons((unsigned?short)atoi(argv[2]));
///////第三步,進行連接
if(connect(sockid(struct?sockaddr*)&server_addrsizeof(server_addr))<0)
{
perror(“連接失敗“);
return;
}
///////第四步,進行發送數據
if((send(sockidDATAsizeof(DATA)0))<0)
{
perror(“發送數據失敗“);
return;
}
else
{
//成功發送
printf(“成功發送\n“);
}
///////關閉socket
closesocket(sockid);
WSACleanup();//和WSAStartup()相對應
return;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????3445??2005-05-24?19:40??控制臺通信程序\Client\Client.dsp
?????文件????????520??2005-05-24?19:10??控制臺通信程序\Client\Client.dsw
?????文件??????50176??2008-04-11?11:38??控制臺通信程序\Client\Client.ncb
?????文件???????1130??2008-04-11?11:37??控制臺通信程序\Client\Client.plg
?????文件???????1208??2005-05-24?19:10??控制臺通信程序\Client\ReadMe.txt
?????文件????????293??2005-05-24?19:10??控制臺通信程序\Client\StdAfx.cpp
?????文件????????667??2005-05-24?19:10??控制臺通信程序\Client\StdAfx.h
?????文件?????155706??2008-04-11?11:37??控制臺通信程序\Client\Debug\Client.exe
?????文件?????????30??2008-04-11?09:51??控制臺通信程序\Client\Debug\run.bat
?????目錄??????????0??2008-04-10?16:17??控制臺通信程序\Client\Debug
?????文件???????1769??2008-04-11?15:19??控制臺通信程序\Client\Client.cpp
?????文件??????48640??2008-04-11?11:38??控制臺通信程序\Client\Client.opt
?????目錄??????????0??2008-04-10?16:17??控制臺通信程序\Client
?????文件???????1208??2005-05-24?19:10??控制臺通信程序\Server\ReadMe.txt
?????文件???????4574??2005-05-24?19:44??控制臺通信程序\Server\Server.dsp
?????文件????????520??2005-05-24?19:10??控制臺通信程序\Server\Server.dsw
?????文件??????50176??2008-04-11?11:42??控制臺通信程序\Server\Server.ncb
?????文件???????1303??2008-04-11?11:42??控制臺通信程序\Server\Server.plg
?????文件????????293??2005-05-24?19:10??控制臺通信程序\Server\StdAfx.cpp
?????文件????????667??2005-05-24?19:10??控制臺通信程序\Server\StdAfx.h
?????文件?????155706??2008-04-11?11:42??控制臺通信程序\Server\Debug\Server.exe
?????目錄??????????0??2008-04-10?16:18??控制臺通信程序\Server\Debug
?????文件???????2583??2008-04-11?11:42??控制臺通信程序\Server\Server.cpp
?????文件??????48640??2008-04-11?11:42??控制臺通信程序\Server\Server.opt
?????目錄??????????0??2008-04-10?16:18??控制臺通信程序\Server
?????目錄??????????0??2008-04-10?16:17??控制臺通信程序
?????文件????????445??2008-04-11?15:32??控制臺通信程序\程序運行說明.txt
-----------?---------??----------?-----??----
???????????????529699????????????????????27
............此處省略0個文件信息
- 上一篇:FontSubsetGUI
- 下一篇:8taesy.rar
評論
共有 條評論