设为首页 加入收藏

TOP

网络编程――基于TCP的程序设计和基于UDP的程序设计 (二)
2014-11-23 23:29:59 来源: 作者: 【 】 浏览:2
Tags:网络编程 基于 TCP 程序设计 UDP
***************************
第四步:接受客户端的请求
第五步:接收客户端的消息和向客户端发送消息
第六步:返回等待
第七步:关闭套接字
****************************************************************/
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockCon=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
sprintf(sendBuf,"This is server,Welcome%s",inet_ntoa(addrClient.sin_addr));
send(sockCon,sendBuf,strlen(sendBuf)+1,0);
char recvbuf[100];
recv(sockCon,recvbuf,strlen(recvbuf)+1,0);
printf("%s\n",recvbuf);
closesocket(sockCon);
}
system("PAUSE");
}

/**************************************************************
基于TCP的客户端应用程序示例代码
****************************************************************/

#include "stdafx.h"
#include
#include
#include
void main()
{
/**************************************************************
加载Winsock库
****************************************************************/
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}
/**************************************************************
第一步:创建Winsock套接字
****************************************************************/
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
/**************************************************************
第二步:向服务器发送连接请求
****************************************************************/
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
connect(sockClient,(const sockaddr*)&addrSrv,sizeof(SOCKADDR));
/**************************************************************
第三步:客户端和服务器的相互通信
****************************************************************/
char recvbuf[100];
recv(sockClient,recvbuf,strlen(recvbuf)+1,0);
printf("%s",recvbuf);
send(sockClient,"My name is zhangsan Client",strlen("My name is zhangsan Client")+1,0);
closesocket(sockClient);

WSACleanup();

system("PAUSE");

}

先运行服务器程序再运行客户端程序,运行结果如下:

\

二、基于UDP的网络应用程序

上面介绍了基于TCP的网络应用程序,为了便于比较,下面介绍基于UDP的网络应用程序的设计方法。

和上面一样,先接受基于UDP的网络应用程序的开发步骤:

服务器端应用程序: 客户端应用程序:

1、创建socket套接字 1、创建socket套接字

2、将套接字绑定(bind)到指定的本机IP地址和端口上 2、向服务器发送消息(sendto)

3、如果检测到有消息到来就接收消息(recvfrom)

4、关闭socket套接字 3、关闭socket套接字

注释:由于基于UDP的网络应用程序是面向无连接的,所以不需要服务器的监听,也不需要客户端的连接请求。实现起来比TCP的面向连接的简单,适用于即时通信。主要用到的函数和方法和TCP的设计方法大致一样。示例代码如下:

/**************************************************************
基于UDP的服务器应用程序示例代码
****************************************************************/

#include "stdafx.h"
#include
#include
#include

#pragma comment(lib,"ws2_32.lib")
void main()
{
/************************

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇编写程序:控制cpu占用率 下一篇C语言文件操作解析(五)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: