当前位置:  编程技术>综合
本页文章导读:
    ▪Windows网络编程之面向连接的Socket编程       by zxy,Java/C++编程交流群:168424095 (1) 介绍 面向连接的Socket通信时基于TCP的。 TCP:Transmission Control Protocol 传输控制协议。TCP是一种面向连接(连接导向)的、可靠的、基于字节流.........
    ▪Silverlight+DomainService在客户端获取时间问题      想在Silverlight客户端显示服务系统当前时间,效果如下:服务端DomService中代码如下:        public DateTime GetNow()        {     &nbs.........
    ▪连连看成对棋子判断算法            闲来无事,把以前写的连连看助手翻出来重新修改了下,中间就涉及到这个棋子判断,拿出来和大家分享交流下       连连看的规则如下,两个相同的棋子必须有通.........

[1]Windows网络编程之面向连接的Socket编程
    来源: 互联网  发布时间: 2013-11-05

by zxy,Java/C++编程交流群:168424095

(1) 介绍

面向连接的Socket通信时基于TCP的。

TCP:Transmission Control Protocol 传输控制协议。TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。

(2)通信流程

服务器和客户端进程实现面向连接的Socket通信的过程及调用的函数

服务器程序要先于客户端程序启动。

(3)函数的使用方法

(3.1)socket()函数用于创建与指定的服务器提供者绑定套接字,函数原型:

SOCKET socket(int af,//指定协议的地址家族,对于TCP/IP协议族,该参数置AF_INET

int type,//指定套接字的类型

int protocol//套接字使用的协议,一般取0,系统会根据套接字的类型决定应使用的传输层协议

);

函数执行成功,返回新Socket的句柄,失败,返回INVALID_SOCKET。

套接字类型:

SOCK_STREAM 提供顺序、可靠、双向和面向连接的字节流数据传输机制,使用TCP

SOCK_DGRAM 支持无连接的数据报,使用UDP

SOCK_RAW 原始套接字,可以用于接收本机网卡上的数据帧或者数据包

#define IPPROTO_TCP 6 /* tcp */

#define IPPROTO_UDP 17 /* user datagram protocol */

举例:socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)

IPPROTO_TCP 指使用tcp协议

 

(3.2)bind()函数可以将本地地址与一个Socket绑定在一起,函数原型:

int bind()(

SOCKET s, //标识一个未绑定的Socket的描述符

const struct sockaddr FAR* name,//绑定到Sockets的sockaddr结构体地址

int namelen //参数name的长度

);

未发生错误返回0,否则返回SOCKET_ERROR

当使用Internet地址家族时,名称由地址家族、主机地址和端口号3部分组成。

ADDR_ANY,允许底层服务提供者使用任何适当的网络地址。

如:sockaddr_in addrSvr;

addrSvr.sin_family = AF_INET; //地址家族

addrSvr.sin_port = htons(port); //端口

addrSvr.sin_addr.s_addr = htonl(INADDR_ANY);//地址

(3.3)listen()函数可以将套接字设置为监听接入连接的状态,函数原型:

int listen(

SOCKET s,//指定一个已经绑定(执行了bind()函数)但尚未连接的套接字

int backlog //指定等待连接队列的最大长度

);

成功返回0,否则返回SOCKET_ERROR。

(3.4)accept()函数等待接受连接请求,函数原型:

SOCKET accept()(

SOCKET s,//通过调用listen()函数设置为监听状态的Socket

struct socka

    
[2]Silverlight+DomainService在客户端获取时间问题
    来源: 互联网  发布时间: 2013-11-05

想在Silverlight客户端显示服务系统当前时间,效果如下:

服务端DomService中代码如下:

        public DateTime GetNow()
        {
            return DateTime.Now;
        }

Silverlight端:

        public static void GetSysDate(SelectOneHander<DateTime> so)
        {
            var m = DB.db.GetNow();
            m.Completed += (a, b) => so(m.Value);
        }

运行在本机上基本没有问题,今天到客户哪儿就是时间对不上,也没有找出问题的原因,不可替代的方法是将服务端返回的类型从DateTime改为String就可以了,修改后代码:

 

服务端DomService中代码如下:

        public String GetNow()
        {
            return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        }

Silverlight端:

        public static void GetSysDate(SelectOneHander<DateTime> so)
        {
            var m = DB.db.GetNow();
            m.Completed += (a, b) => so(DateTime.Parse(m.Value));
        }

 

记录一下,方便也碰到此问题的同学!

 

 

作者:Lijun7788 发表于2013-1-5 16:11:23 原文链接
阅读:0 评论:0 查看评论

    
[3]连连看成对棋子判断算法
    来源: 互联网  发布时间: 2013-11-05
      闲来无事,把以前写的连连看助手翻出来重新修改了下,中间就涉及到这个棋子判断,拿出来和大家分享交流下

      连连看的规则如下,两个相同的棋子必须有通路,且拐点不能超过两个就可以消掉,根据这个原理,也就是下面三种情况的棋子可以消掉

      第一种:一条直线上的

                       就是两个棋子间没有其他任何棋子,这个很好判断,代码如下:(m,n为两个棋子的点坐标)

                      

BOOL Cllk_assistV20Dlg::IsLine(CPoint m,CPoint n)
{  
	int min_num,max_num;
	if (m.x==n.x)   
	{  
		min_num=m.y>n.y?n.y:m.y;
		max_num=m.y>n.y?m.y:n.y;
		for (int i=min_num+1;i<max_num;i++)
		{
			if (chessdata_int[i][m.x]!=0)
			{
				return FALSE;
			}
		}
		return TRUE;
	}
	else if (m.y==n.y)
	{
		min_num=m.x>n.x?n.x:m.x;
		max_num=m.x>n.x?m.x:n.x;
		for (int i=min_num+1;i<max_num;i++)
		{
			if (chessdata_int[m.y][i]!=0)
			{
				return FALSE;
			}
		}
		return TRUE;
	}
	else
		return FALSE;
}

第二种:一个拐角连通 这个可以先找到两个棋子所对应矩形的另外两个顶点t、s,然后用t和s分别和两个棋子做直线连接判断,只要t和s中有一个点能和两个棋子直线连通,说明,两个棋子是一个拐角连通,算法如下:
      
BOOL Cllk_assistV20Dlg::IsOneCorner(CPoint m,CPoint n)
{   

	//点m,n不能在一条直线上
	if (m.x==n.x||m.y==n.y)
	{
		return FALSE;
	}


	CPoint temp;
	temp.x=m.x;
	temp.y=n.y;	
	if (IsLine(m,temp)&&IsLine(n,temp)&&PointIsEmpty(temp))
	{
		return TRUE;
	}
	else 
	{
		temp.x=n.x;
		temp.y=m.y;
		if (IsLine(m,temp)&&IsLine(n,temp)&&PointIsEmpty(temp))
		{
			return TRUE;
		}
	}
	return FALSE;

第三种:两个拐角连通 和上面的类似,遍历其中一个棋子垂直方向的所有可到达坐标点,让每个坐标点和另外一个棋子做一个拐角连通判断,如果水平或者垂直方向上存在这样的坐标点,则两个棋子两个拐角连通
        
BOOL Cllk_assistV20Dlg::IsTwoCorner(CPoint m,CPoint n)
{
	for (int i=0;i<11;i++)     //向上找
	{  
		if (i==m.y)
		{
			continue;
		}
		CPoint temp;
		temp.x=m.x;
		temp.y=i;
		if (IsLine(m,temp)&&IsOneCorner(temp,n)&&PointIsEmpty(temp))
		{
			return TRUE;
		}
	}
	for (int i=0;i<19;i++)
	{
		if (i==m.x)
		{
			continue;
		}

		CPoint temp;
		temp.y=m.y;
		temp.x=i;
		if (IsLine(m,temp)&&IsOneCorner(temp,n)&&PointIsEmpty(temp))
		{
			return TRUE;
		}
	}
	return FALSE;
}

最后依次判断两个棋子是否符合这三种情况
    
BOOL Cllk_assistV20Dlg::IsConnect(CPoint m,CPoint n)
{   

	if (IsLine(m,n))
	{
		return TRUE;
	}
	else if (IsOneCorner(m,n))
	{
		return TRUE;
	}
	else if (IsTwoCorner(m,n))
	{
		return TRUE;
	}
	else 
		return FALSE;	
}





        
作者:txg703003659 发表于2013-1-5 16:10:58 原文链接
阅读:0 评论:0 查看评论

    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法 iis7站长之家
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3