UWP开发之StreamSocket聊天室 (一)

Cle****-he UID.1073626
2015-11-03 发表

本帖最后由 entty 于 2015-11-19 00:48 编辑

StreamSocket属于UWP中的网络通信开发技术,UWP中的StreamSocket已具备很完整的网络通信能力,可适应网络开发中不同的开发需求。首先我们先看下StreamSocket类的官方文档:***链接停止解析***

通过文档我们可以看出来UWP中的StreamSocket使用起来极其方便,对一个网络终端服务端发起连接请求一般要经过以下几个步骤:

[list=1]
[*]创建一个StreamSocket对象
[*]使用ConnectAsync方法对网络终端服务发起连接请求
[*]从SteamSocket.InputStream对象中读取终端数据
[*]如若需要断开连接直接使用StreamSocket.Dispose()方法
[/list]

为了更深入的了解StreamSocket的使用,接下来几篇博客中我会结合一个聊天室的实例来从头到尾做一个简单的UWP版聊天室。

首先先看下项目解决方案文件架构:
***附件停止解析***


Models项目中存放着通用的Model

SocketBusiness 项目是用来处理StreamSocket通信的逻辑的,里面包含socket对象生成工厂、客户端socket逻辑、服务端socket逻辑

SocketClientSample 是用来存放UWP StreamSocket客户端代码

SocketServiceSample 是用来存放UWP StreamSocket服务端代码



接下来我们一步一步的去实现这个项目

创建Models

首先从Models项目着手,无论什么项目什么需求总要先把它们给抽象化嘛,而数据抽象化出来的就是Model,所有无论是什么项目,第一要做的基本都是建模,不然数据都没你咋玩?

既然要聊天,那我们就先创建聊天消息Model类,新建MessageModel.cs类,类成员如下,注释写的很清楚,就不解释了
[mw_shl_code=csharp,true]public class MessageModel
{
/// <summary>
/// 消息类型
/// </summary>
public MessageType MessageType { get; set; }

/// <summary>
/// 消息数据
/// </summary>
public object Message { get; set; }

/// <summary>
/// 发送者
/// </summary>
public UserModel User { get; set; }

/// <summary>
/// 发送时间
/// </summary>
public DateTime SetDateTime { get; set; }

/// <summary>
/// 辅助属性,用来决定消息显示的时候是靠左还是靠右
/// 靠左是别人发来的消息 靠右是自己发出去的消息
/// </summary>
public HorizontalAlignment Horizontal { get; set; } = HorizontalAlignment.Left;

}

public enum MessageType
{
//文字消息
TextMessage,
//系统消息之断开连接
Disconnect
}[/mw_shl_code]


NavModel:这个Model是用来做导航菜单的,也很简单:
[mw_shl_code=csharp,true]public class NavModel
{
/// <summary>
/// 要显示的文字
/// </summary>
public string Title { get; set; }

/// <summary>
/// 图标
/// </summary>
public Symbol Icon { get; set; }

/// <summary>
/// 要导航到的页面
/// </summary>
public Type PageType { get; set; }
}[/mw_shl_code]

UserModel:用来存储用户数据的,这里我们就只存储下用户昵称,至于IP 、Guid 、用户头像等等等神马的暂时就不考虑了。
[mw_shl_code=csharp,true]public class UserModel
{
/// <summary>
/// 用户昵称
/// </summary>
public string UserName { get; set; }

/// <summary>
/// ip 地址 暂时不需要
/// </summary>
public string UserIpAddress { get; set; }
}[/mw_shl_code]

Models项目我们就创建完毕了,今天就先到这吧,如果再接着写SocketBusiness部分估计博文会太长,还是分开来写吧。

先放上来一张运行的效果图解解馋(非最终版,同时在操作服务端和客户端,有点忙不过来QAQ):
***附件停止解析***


//为了方便智友查看,附上其它目录地址
***链接停止解析***
***链接停止解析***
***链接停止解析***
***链接停止解析***
***链接停止解析***


本文出自:53078485群大咖Aran

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
fanx****zeng UID.551053
2015-11-03 回复

纯技术贴,支持一下

蜜疯 UID.1016906
2015-11-12 使用 Lumia 830 回复

虽然看不懂,纯支持

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报