- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
TCP网络程序框与实例
实例程序说明
实例程序使用的编程环境为当前常用的Visual C++6.0。为了便于大家理解用Socket进行网络程序设计的原理,本程序使用了Visual C++6.0下的控制台程序“Win32 Console Application”。控制台程序的结构一目了然,使程序中各种Winsock API调用都非常清楚。
该程序中通信协议使用的是面向连接的TCP协议(SOCK_STREAM)。服务器端的IP地址使用系统指定的IP地址,端口号在程序中指定为5050,用符号常量来定义。
服务器端程序
/*************************************************************************
调试环境:Visual C++6.0
服务器IP地址:由系统指定
服务器端口号:5050
程序名称:server.cpp
程序功能:服务器端的程序当有客户提出连接请求时,在端口5050与客户端进行TCP连接,
连接成功后,显示客户IP地址和端口号,并给客户端发送 Hello! I am a server.
字符串。如果发送正确则显示所发送的字节数
命令格式:server
**************************************************************************/
#includeWinsock2.h
#includestdio.h
#includestdlib.h
//服务器使用的端口号为5050
#define DEFAULT_PORT 5050
void main( )
{
int iPort=DEFAULT_PORT;
WSADATA wsaData;
SOCKET sListen,
sAccept;
//客户地址长度
int iLen;
//发送的数据长度
int iSend;
//要发送给客户的信息
char buf[ ]=I am a server.;
//服务器和客户的地址
struct sockaddr_in ser,
cli;
printf(-------------------------------\n);
printf(Server waiting\n);
printf(-------------------------------\n);
if(WSAStartup(MAKEWORD(2,2),wsaData)!=0)
{
printf(Failed to load Winsock.\n );
return;
}
//创建服务器端套接口
sListen=socket(AF_INET,SOCK_STREAM,0);
if(sListen==INVALID_SOCKET)
{
printf(socket( )Failed:%d\n, WSAGetLastError( ));
return;
}
//以下建立服务器端地址
ser.sin_family=AF_INET;
//htons( )函数把一个双字节主机字节顺序的数转换为网络字节顺序的数
ser.sin_port=htons(iPort);
//htonl( )函数把一个四字节主机字节顺序的数转换为网络字节顺序的数
//使用系统指定的IP地址INADDR_ANY
ser.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(sListen,(LPSOCKADDR)ser,sizeof(ser))==SOCKET_ERROR)
{
printf(bind( ) Failed: %d\n, WSAGetLastError( ));
return;
}
//进入监听状态
if(listen(sListen,5)==SOCKET_ERROR)
{
printf(listen( ) Failed:%d\n,WSAGetLastError( ));
return;
}
//初始化客户地址长度参数
iLen=sizeof(cli);
//进入一个无限循环,等待客户的连接请求
while(1)
{
sAccept=accept(sListen,(struct sockaddr*)cli,iLen);
if(sAccept==INVALID_SOCKET)
{
printf(accep
文档评论(0)