chatbox

【C#】写一个支持多人聊天的TCP程序

孤者浪人 提交于 2020-04-16 09:43:29
【推荐阅读】微服务还能火多久?>>> 碎碎念 先谈谈我们要实现的效果:客户端可以选择要聊天的对象,或者直接广播消息(类似QQ的私聊和群消息) 那么,该如何实现呢? 首先明确的是,要分客户端和服务器端两个部分( 废话 ) 客户端:选择要发送的对象,发送信息。同时有一个线程在监听是否收到新的信息。 服务器端:负责转发收到的消息,并负责管理所有接入的连接 好了有了大体思路后,开始编程吧~ 客户端 界面设计 客户端要提供的信息主要是发送对象、发送信息内容,故设计如下: 其中用户名必须提供(这里考虑的比较简单,不需要验证用户名是否重复),发送信息时需要选择目标用户。 编码实现 连接服务器部分 连接服务器和正常的tcp连接没什么区别,由于要考虑到 目标用户 选项刷新的问题,这里必须在建立连接后向服务器发送一条信息告知服务器自己的身份,服务器接收后会再返回一条信息来告知客户端目前服务器在线用户的名称。 因为请求的信息内容、作用不一样,这里使用自定义的“信息格式”,使用$符号来分割,请求格式为 code$message 以下是请求的说明表 故我们可以根据该表写出一个Encode函数: private String EncodeMessage(String message, int code,String goalName) { switch (code) { case 1 : // 汇报用户名