用NET语言写个“聊天室”

  1. 当我们使用“项目”选项卡添加引用的时候,我们添加的其实是路径,在调用的时候,通过路径去找到这个程序集使用,当我们使用“浏览”选项卡是,就是把浏览到的这个程序集复制到当前程序集下;
  2. 多线程:

2.1    产生一个线程的4步骤:

2.1.1          编写产生线程所要执行的方法

2.1.2          引用System.Threading命名空间

2.1.3          实例化Thread类,并传入要执行的方法委托,(这时候这个线程还没有开始执行)

2.1.4          调用Thread实例的Start方法,标记该线程可以被cpu执行,但是具体执行的时间由cpu决定。

2.2    方法重入:程序中多个线程同时运行时,就可能发生同一个方法被多个线程同时调用的情况。当这个方法中存在一些非线程安全的代码时,方法重入就会导致数据不一致的情况,这是非常严重的bug;

2.3    前台线程和后台线程:

2.3.1          前台线程:只有所有的前台线程都关闭才能完成程序的关闭

2.3.2          后台线程:只要前台线程结束,后台线程就自动结束;

2.4    带参数的方法的线程调用:创建线程是使用ParameterizedThreadStart 这个委托类来获得带参数的方法,参数在Start中传递;

2.5    不允许跨线程操作:可以跨线程读,但是跨线程写的时候就不允许,这也是程序的保护;这是我们做简单的就是关闭跨线程检查;

  1. 套接字

3.1    报文式(UDP):数据包套接字的数据发送方式,将数据拆分成好几份,一份一份的发送,但是接受没接受不关心;根据接受到的包,查看是否缺少,根据包里的信息进行排列;(接受的顺序不一定是发送的顺序,发送的数据不一定能顺利到达)速度快,节约资源

3.2    流式(TCP):流式套接字的数据发送方式,首先建立连接,连接建立之后,会先经历TCP协议的三次握手协议来建立连接,发送消息,每次发送都会接受一个回应,如果回应没有收到,那么继续发,知道收到为止;因为连接一直在发送期间保持,所以比较占用资源;

  1. Socket一般应用模式:

5.Receive方法,这个方法一直通过套接字监听对方发消息,如果关闭了对话框,也就是结束了线程,对方发套接字就断开了,这样就Receive不知道监听谁发消息,就会抛异常,所以我们要对异常捕捉。更多net教程(http://net.itcast.cn/)

时间: 2024-11-14 21:54:19

用NET语言写个“聊天室”的相关文章

【z13区】nodejs原生态模块,写个聊天室

目的:用控制台实现个聊天室 使用模块:net,process 开始前的废话:对于初学者来说,先理解官方文档很重要. 有很多写聊天室的,大多引用的第三方模块,难免会增加新手学习负担,这里我只使用官方中的net和process模块. 希望能给新手,更好的理解这两个模块(net模块为主,process模块为辅) 正文: 项目主要就两个文件 server.js:服务器 client.js:客户端(可以多开) /*server.js*/var net=require('net'); var server=

Golang之写一个聊天室

1. 海量用户在线聊天系统 2. 点对点聊天 3. 用户登录&注册 一.服务端开发 1. 用户管理 用户id:数字 用户密码:字母数字组合 用户昵称:用来显示 用户性别:字符串 用户头像:url 用户上线登录时间:字符串 用户是否在线:online 数据存储:redis hash:users 2. 用户动作 1. 发送信息 2. 接收信息 3. 用户注册&登录 4. 用户消息离线存储 二.客户端开发 1. 用户注册 2. 用户登录 3. 发送信息 4. 获取用户列表 三.通信协议 [0:4

Linux下c++11多线程聊天室

刚看的c++11多线程,写个聊天室试试编译的时候加上 c++11 和 多线程库g++ -Wall -std=c++0x -pthread -o server server.cppserver 和client 都是 q 退出?1. [代码]server.cpp #include <iostream>#include <thread>#include <arpa/inet.h>#include <cstring>#include <vector>#i

linux下使用多线程编写的聊天室

自从开始学linux网络编程后就想写个聊天室,一开始原本打算用多进程的方式来写,可是发觉进程间的通信有点麻烦,而且开销也大,后来想用多线程能不能实现呢,于是便去看了一下linux里线程的用法,实际上只需要知道 pthread_create 就差不多了,于是动手开干,用了两天时间,调试的过程挺痛苦的,一开始打算用纯C来撸,便用简单的数组来存储客户端的连接信息,可是运行时出现了一些很奇怪的问题,不知道是不是访问了临界资源,和线程间的互斥有关等等:奇怪的是,当改用STL的set或map时问题就解决了,

零基础实现node+express个性化聊天室

本篇文章使用node+express+jquery写一个个性化聊天室,一起来get一下~(源码地址见文章末尾) 效果图 项目结构 实现功能 登录检测 系统自动提示用户状态(进入/离开) 显示在线用户 支持发送和接收消息 自定义字体颜色 支持发送表情 支持发送图片 下面将一一讲解如何实现 前期准备 node及npm环境.express.socket.io 具体实现 1.将聊天室部署到服务器 先用node搭建一个服务器,部署在localhost:3000端口,先尝试向浏览器发送一个"hello wo

uni-app 之 聊天室页面滚动到底部

uni-app 之 聊天室滚到最底部 请注意 !:  知识点为uni-app 与 vue 结合 这次写到聊天室,碰到一个emmmmm问题比较严重的事情,聊天嘛,咱们想实现的就无非是微信,QQ那种聊天的效果嘛,我们研究了,,,,emmmm  (n久之长),终于是把这个功能写出来了,代码等什么时候整理出来给大家看,今天主要说一下碰到的一个问题,就是我发送消息的时候, 想要将消息弹出,发一条弹一条,代码附上 注意:scroll-view要设置高度 输入内容后,必然要在对话界面的底部显示内容,可以通过u

自写聊天室_LinuxC实现(4)——项目文档

西邮Linux兴趣小组  暑期项目 项目名称:    happychat        项目作者:      楚东方     1. 引言 1.1 项目综述 对项目进行简要介绍,并说明编写此项目的目的. 该项目为聊天室,主要为了实现聊天,文件传输,方便linux环境下的,交流与聊天. 实现功能: 1.好友管理: (1)添加好友 (2)删除好友 2.群管理 (1)创建群 (2)加群 (3)退群 (4)解散群 3.文件传送 实现了上传和下载的断点续传 4.聊天界面分屏 利用光标的移动对输入和屏幕聊天记

ASP.NET 使用application和session对象写的简单聊天室程序

ASP.Net中有两个重要的对象,一个是application对象,一个是session对象. Application:记录应用程序参数的对象,该对象用于共享应用程序级信息. Session:记录浏览器端的变量对象,用来存储跨网页程序程序的变量或者对象. 说实话,写了快一年的asp.net,application对象还真没怎么用过.看了看书,根据这两个对象的特性写了一个简单的聊天室程序.真的是非常的简陋. 我的思路是,有两个页面Default页和ChatRoom页,页面布局如图: Default

go语言实现简单的聊天室

通常聊天室的架构分为服务器端和客户端: 服务器端:接受来自于客户端的连接请求并建立连接:所有客户端的连接会放进连接池中,用于广播消息: 客户端:连接服务器:向服务器发送消息:接收服务器的广播消息: 注意事项:某一个客户端断开连接后需要从连接池中摘除,并不再接收广播消息:某一个客户端断开连接后不能影响服务器端或别的客户端的连接: 详细的代码如下,文档看注释就好了,不再细说: 服务器: server.go package main import ( "net" "log"