论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

利用WinSock进行有连接的通信_VC技术_C语言教程

文章类别:C语言程序设计 | 发表日期:2010-6-19 10:01:11

利用WinSock进行有连接的通信_VC技术_C语言教程

本文来自21视频教程网C语言频道

WinSock提供了对TCP(传输控制协议)的支持,通过TCP协议我们可以与指定IP地址的主机建立,同时利用建立的连接可以双向的交换数据。利用CSocket操纵有连接数据交换很简单,但是在有连接的通信中必需有一方扮演服务器的角色等待另一方(客户方)的连接请求,所以服务器方需要建立一个监听套接口,然后在此套接口上等待连接。当连接建立后会产生一个新的套接口用于通信。而客户方在创建套接口后只需要简单的调用连接函数就可以创建连接。对于有连接的通信不论是数据的发送还是发送与接收的顺序都是有保证的。双方的函数调用顺序如图

下面的代码演示了如何建立连接和发送/接收数据:

/*
服务器方在端口6802上等待连接,当连接建立后关闭监听套接口
客户方向服务器端口6802发起连接请求
*/
BOOL  CMy63_s1_serverDlg::OnInitDialog()
{
	CDialog::OnInitDialo g();

	CSocket sockListen;
	//创建本地套接口
	sockListen.Create(6802,SOCK_STREAM,"127.0.0.1");
	//绑定参数
	sockListen.Bind(6802,"127.0.0.1");
	sockListen.Listen(5);
	//等待连接请求,m_sockSend为成员变量,用于通信
	sockListen.Accept(m_sockSend);
	//关闭监听套接口
	sockListen.Close();
	//启动定时器,定时发送数据
	SetTimer(1,3000,NULL);
...
}
void CMy63_s1_serverDlg::OnTimer(UINT nIDEvent) 
{
	static iIndex=0;	
	char szSend[20];	
	sprintf(szSend,"%010d",iIndex++);	
	//发送TCP数据
	int iSend= m_sockSend.Send(szSend,10,0);
...
}
BOOL CMy63_s1_clientDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	//创建本地套接口
	m_sockRecv.Create();
	//发起连接请求
	BOOL fC=m_sockRecv.Connect("127.0.0.1",6802);
	TRACE("connect is %s\n",(fC)?"OK":"Error");
	//启动定时器,定时接收数据
	SetTimer(1,3000,NULL);
...
}
void CMy63_s1_clientDlg::OnTimer(UINT nIDEvent) 
{
	char szRecv[20];	
	//接收TCP数据
	int iRecv =m_sockRecv.Receive(szRecv,10,0);
	TRACE("received %d byte\n",iRecv);	
	if(iRecv>=0)
	{
		szRecv[iRecv] ='\0';
		m_szRecv=szRecv;
		UpdateData(FALSE);
	}
...
} 

下载例子代码,63_s1_client工程为客户,63_s1_server工程为服务器方。

视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058