用 C# 写 TCP socket 连接

第一次用 C# 写 TCP 连接,求指点
和同学合作完成的期中project
最终是完成了一个聊天室


首先利用封装好的 Windows.Networking.Sockets.StreamSocket 生产我的 clientsocket
这里写图片描述


通过后端给定的IP地址以及监听端口实现TCP连接
这里写图片描述


注意的是socket端要实现单例模式,因为用户的所有状态都是记录在 clientsocket 类里面,如果每次页面跳转都重新生成一次 clientsocket 很容易产生混乱。
这里写图片描述


完成第一步之后,实现了前端和后端的连接之后就要实现监听了
对于前端事件,我是通过委托和事件来实现,通过后盾接受的消息触发事件,然后把参数传递,具体的实现再在前端写,达到修改前端的目的,实现和后端的交流
主要的事件包括
这里写图片描述
1 用户登录和注册状态
2 用户聊天接受、发送 - 文字、图片
3 用户修改图像
4 用户进入、退出房间
5 用户所在房间进来、退出了某个用户

规定socket端和后端通过json格式进行通信
主要就是 json 里面分为系统消息(登录、获取房间用户列表等),聊天信息,以及图片传输。
因为所有协议都是自己定的,所以比较复杂,也是因人而异的,就不仔细说了
如果没有图片传输,那么socket本来是很简单的,网上随便搜的直接通过这种StreamWriter的WriteLineAsync当成字符串输出后台就可以收到了。
这里写图片描述


但是当我们决定加入了图片处理时就复杂多了,图片的传输不能直接当成字符串处理,于是我们定义先发送一段json信息,表示接下来要传输图片,以及图片转成二进制的大小,然后紧接着就把图片转成二进制发送过去,同理接受图片。
这里写图片描述
其中的 Imgbytes 就是我接受回来的图像的二进制格式
后面的发生事件就是规定的协议,可以忽略,并且通过isFile 判断是否在读文件,当时考虑的不止传输图片,但是由于时间关系没有实现。


前端和socket交互就说这么多,后端的有空再码上来~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值