C# socket 局域网聊天程序的一点心得

(一)服务器与客户端的关系

1、服务器开启监听服务
      服务器使用特定的端口不停的监听来自客户端的消息。(开启一个新线程进行监听)。
2、监听来自客户端的登录信息并进行校验;
      客户端登陆时会向服务器发送验证消息(用户名、密码),服务器接收到消息后查询数据库进行验证。验证成功后,发送允许登录信号,验证失败,发送不允许登录信号。
3、定时检查客户端的连接。
      监听来自各个客户端发来的心跳包,服务端每隔特定时间检测客户端是否有信息发送。如有则在线,否则已下线。
4、广播信息给客户端。     
      打包所有客户端的信息(IP地址、端口等),每隔特定时间广播转发给每个上线的客户端;

(二)客户端与客户端的关系

1、客户端开启监听服务
      客户端使用特定的端口不停的监听来自其他客户端的消息。(开启一个新线程进行监听)。
2、点对点传输数据。 
      客户端已从服务器获知了各个在线客户端的ip及端口号。这样就可以与其他客户端进行连接。

(三)有关不同类型的文件 

做聊天程序。会发送不同类型的文件,如文本、文件、图片等格式。这就需要我们做好协议。我们可以把要发送的信息进行包裹。做一个标记。要发送的文本信息前添加几个字节或在后面添加几个字节。用来标记这是文本信息。在接收的时候我们获取标记信息,并还原源消息。通过标记就可以知道。信息的类型。文件、图片等也是如此。

(四)有关跨线程

做聊天程序会开启多个线程,这就避免不了跨线程访问,我们可以取消跨线程检查机制

<span style="font-size:18px;">CheckForIllegalCrossThreadCalls = false;</span>

在这里不推荐使用。可能会引发其他问题。我们可以使用委托。例如我们想要在一个新线程中访问界面线程的控件我们可以这样实现

TextBox1.Dispatcher.Invoke(new Action(() => { TextBox1.Text = "helloword"; }));

实例:链接:http://pan.baidu.com/s/1qWl5jFu 密码:6p4t

C# socket 局域网聊天程序的一点心得相关推荐

  1. java局域网聊天代码_简单的局域网聊天程序(java版本的)

    局域网聊天程序,首先我已经默认你的电脑已经配置好的java开发的一些环境,所需代码有两个java的源代码,他们分别是1:Server_Test.java-------2:Socket_Test.jav ...

  2. c语言实现udp 聊天程序代码,C语言用UDP 实现局域网聊天程序源码.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspC/C++资料 C语言用UDP 实现局域网聊天程序源码.doc1 ...

  3. 排行榜上用C++写局域网聊天程序

    摘要:用C++写局域网聊天程序 2012年07月09日啰嗦完天使之道,尽量将具有相类似功能的即时通讯软件用例抽象并归类,防属性,揭开人类进程的惊天秘密,并没有攻击技能,用C++写局域网聊天程序获得了众 ...

  4. 并植入QTE系统的局域网聊天程序

    摘要:局域网聊天程序 2012年07月09日俗话说得好,本文从简单网络管理协议的基本概念入手,刀,只要迅速按下与游戏画面上相应出现的按键,美网管大师之类的网管软件的使用以及软,戟,这些也都是大家讨论的 ...

  5. socket局域网聊天demo

    socket局域网聊天demo,地址包内有实现源码:https://download.csdn.net/download/wyazyf/11457936

  6. 局域网聊天程序 java MySQL_课内资源 - 基于JAVA的局域网聊天软件的设计与实现(仿制QQ)...

    一.系统分析 1.1 问题描述客户端 实现简易版的局域网聊天器 实现富文本内容聊天 智能聊天机器人 群发消息 传送文件等功能 服务器端 实现群发通知 管理聊天线程 1.2 系统功能分析客户端功能 登陆 ...

  7. 利用TCP传输协议实现基于Socket的聊天程序(高级版_多线程)

    大家好,在上篇<利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)>博客中,所写程序只是实现简单的连接通信,基于控制台实现,运用了TCP和UDP两种传输协议.今天我和大家分 ...

  8. c++语言socket udp聊天程序,使用C/C++实现Socket聊天程序

    使用C/C++实现Socket聊天程序 Initsock.h文件 // initsock.h文件 #include #include #include #include #pragma comment ...

  9. Qt编写的局域网聊天程序

    这个程序足足用了一个月的时间,也怪小生内功不强,但此番修炼着实受益良多.整体程序不建议大家观摩,主要是太乱了.在这里我会将其中的几个重要部分剥离出来和大家分享. 该程序界面灵感来源于网络,小生不才,又 ...

  10. java socket编程实现聊天程序_java Socket编程 聊天程序 服务器端和客户端

    [java]代码库package com.gufengxiachen.sthreadchatapp; /** * @author GUXIA */ import java.io.BufferedRea ...

最新文章

  1. Oracle数据库相关命令
  2. 大学期间可以获得哪些荣誉_大学期间没有什么荣誉经历,该怎么写简历呢?找工作会很难吗?...
  3. 对《程序员的自我修养》(龙书)读后思考
  4. 【Java】Collection集合和泛型
  5. Linux入门:usermod - 修改用户帐户信息
  6. Java的IO操作中关闭流的注意点
  7. 解决VST插件无法加载之sam音架的配置
  8. 变异记录文件格式 vcf
  9. 匈牙利算法及KM算法详解
  10. FTP实验、利用SMTP协议发匿名邮件
  11. Photoshop基本使用
  12. BMC通过PECI接口获取CPU温度实现方法
  13. 多个领域同步崛起,3D建模师竟成最后的大赢家?
  14. 群晖NAS:共享文件夹、用户、群组建立及权限设置
  15. vue大文件下载(下载进度展示)
  16. [行业动态] 阿里入股新浪对蘑菇街、美丽说的冲击
  17. MP4/MP3解封装ffmpeg(十三)
  18. CentOS7下使用ngrok搭建内网穿透服务器
  19. ArcGIS10.2打开ArcToolbox闪退解决方法
  20. 用场景法剖析需求问题

热门文章

  1. 微软亚洲研究院院长换帅!复旦校友周礼栋博士升任新院长
  2. java怎么取map中的key值,Java获取map中key和value的方法
  3. html版本绩拼音怎么写,绩这个字怎么读、绩怎么念、绩怎么拼音、绩怎么组词...
  4. 致敬达叔 -- 80、90的童年观影记忆
  5. Allure自动化测试报告之修改allure测试报告logo与标题,让报告具有公司的气息
  6. [基本功]辛普森悖论
  7. WinDbg 符号下载错误解决方案
  8. 因为计算机限制无法访问U盘,U盘拒绝访问怎么办解决教程
  9. linux下的网络管理命令,【linux】常见的网络管理命令
  10. 将数据源的数据格式化显示,加上金额符号