C#即时通讯(局域网QQ)

一:服务器端:

 private void Form1_Load(object sender, EventArgs e){Control.CheckForIllegalCrossThreadCalls = false;}private void button1_Click(object sender, EventArgs e){//ip地址IPAddress ip = IPAddress.Parse(textBox1.Text);// IPAddress ip = IPAddress.Any;//端口号IPEndPoint point = new IPEndPoint(ip, int.Parse(textBox2.Text));//创建监听用的Socket//使用IPv4地址,流式socket方式,tcp协议传递数据Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建好socket后,必须告诉socket绑定的IP地址和端口号。//让socket监听pointtry{//socket监听哪个端口socket.Bind(point);//同一个时间点过来10个客户端,排队socket.Listen(10);ShowMsg("服务器开始监听");Thread thread = new Thread(AcceptInfo);thread.IsBackground = true;thread.Start(socket);}catch (Exception ex){ShowMsg(ex.Message);}}//记录通信用的SocketDictionary<string, Socket> dic = new Dictionary<string, Socket>();// private Socket client;void AcceptInfo(object o){Socket socket = o as Socket;while (true){//通信用sockettry{//创建通信用的SocketSocket tSocket = socket.Accept();string point = tSocket.RemoteEndPoint.ToString();ShowMsg(point + "连接成功!");comboBox1.Items.Add(point);dic.Add(point, tSocket);//接收消息Thread th = new Thread(ReceiveMsg);th.IsBackground = true;th.Start(tSocket);}catch (Exception ex){ShowMsg(ex.Message);break;}}}void ShowMsg(string msg){textBox3.AppendText(msg + "\r\n");}//接收消息void ReceiveMsg(object o){Socket client = o as Socket;while (true){//接收客户端发送过来的数据try{//定义byte数组存放从客户端接收过来的数据byte[] buffer = new byte[1024 * 1024];//将接收过来的数据放到buffer中,并返回实际接受数据的长度int n = client.Receive(buffer);//将字节转换成字符串string words = Encoding.UTF8.GetString(buffer, 0, n);ShowMsg(client.RemoteEndPoint.ToString() + ":" + words);}catch (Exception ex){ShowMsg(ex.Message);break;}}}private void button2_Click(object sender, EventArgs e){try{ShowMsg(textBox4.Text);string ip = comboBox1.Text;byte[] buffer = Encoding.UTF8.GetBytes(textBox4.Text);dic[ip].Send(buffer);// client.Send(buffer);}catch (Exception ex){ShowMsg(ex.Message);}}

二:客户端

 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);private void button2_Click(object sender, EventArgs e){//客户端给服务器发消息if (client != null){try{ShowMsg(textBox4.Text);byte[] buffer = Encoding.UTF8.GetBytes(textBox4.Text);client.Send(buffer);}catch (Exception ex){ShowMsg(ex.Message);}}}private void button1_Click(object sender, EventArgs e){//连接到的目标IPIPAddress ip = IPAddress.Parse(textBox1.Text);//IPAddress ip = IPAddress.Any;//连接到目标IP的哪个应用(端口号!)IPEndPoint point = new IPEndPoint(ip, int.Parse(textBox2.Text));try{//连接到服务器client.Connect(point);ShowMsg("连接成功");ShowMsg("服务器" + client.RemoteEndPoint.ToString());ShowMsg("客户端:" + client.LocalEndPoint.ToString());//连接成功后,就可以接收服务器发送的信息了Thread th = new Thread(ReceiveMsg);th.IsBackground = true;th.Start();}catch (Exception ex){ShowMsg(ex.Message);}}void ShowMsg(string msg){textBox3.AppendText(msg + "\r\n");}//接收服务器的消息void ReceiveMsg(){while (true){try{byte[] buffer = new byte[1024 * 1024];int n = client.Receive(buffer);string s = Encoding.UTF8.GetString(buffer, 0, n);ShowMsg(client.RemoteEndPoint.ToString() + ":" + s);}catch (Exception ex){ShowMsg(ex.Message);break;}}}private void Form1_Load(object sender, EventArgs e){Control.CheckForIllegalCrossThreadCalls = false;}

参考自:https://www.cnblogs.com/asdyzh/p/9839775.html

C#即时通讯(局域网QQ)相关推荐

  1. Android即时通讯--仿QQ即时聊天:(一)初识Socket

    1.即时通讯简介 即时通讯(Instant Messaging,简称IM)是一个终端服务,允许两人或者多人通过网络即时传递文字讯息.档案.语音等.简单的概括就是发送消息时,只要对方在线,就能立即接收到 ...

  2. 即时通讯项目 java版本qq (含服务器和客户端)源码_即时通讯安卓-QQ互联网和即时通讯云,如何实现即时通讯,这是Android还是Java...

    Android是系统平台. 应用程序所做的是应用程序的开发和完成 也就是说,通信是网络通信,但在手机环境中,网络的情况更复杂,所以我们必须做好结构 安卓即时通讯. 怎么做?安卓版TT即时通讯排行. A ...

  3. Ubuntu 即时通讯器: QQ 下载和安装

    总目录 - Ubuntu 应用软件安装 && 开发环境搭建测试 目录 文章目录 安装 使用包管理工具安装 手动下载安装包后安装 使用 添加到左侧快速启动栏 安装 使用包管理工具安装 查 ...

  4. Android即时通讯--仿QQ即时聊天:(五)聊天模块

    1.复杂ListView的展示 聊天模块其实就是一个复杂的ListView,在数据适配器中,从application中获取到当前登录的用户,与聊天消息中的from参数进行比较,如果两者相同则说明是自己 ...

  5. 即时通讯传送文件的方法有几种?

    即时通讯是当代人生活中必不可少的应用软件了,无论使用QQ.微信还是钉钉,我们都可以通过这些即时通讯软件来进行信息的交换以及文件的传输. 那么即时通讯传送文件的方法有几种呢?接下来我们一起盘点一下. 即 ...

  6. winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析

    即时通讯程序,腾讯QQ可以说是一家独大,虽然市场上仍然有类似QQ的即时通讯程序,但是基本上面向的对象都是特定人群.那么,现在做一个即时通讯的软件还有意义吗?在我看来,意义非常大.作为一个学习编程的人, ...

  7. IM源码 Oseicq即时通讯介绍 比QQ还牛

    oseicq概述: oseicq是以先进的点对点通讯技术(P2P)为基础的基于互联网即时通信软件(im).在集团和企业内部,它是一套有效的沟通利器,提供了一个可靠而灵活的集成平台,可方便快捷地接入企业 ...

  8. 基于环信的仿QQ即时通讯的简单实现

    代码地址如下: http://www.demodashi.com/demo/11645.html 我的博客地址 之前一直想实现聊天的功能,但是感觉有点困难,今天看了环信的API,就利用下午的时间动手试 ...

  9. 局域网即时通讯软件java_如何选择企业即时通讯软件?

    企业即时通讯工具是一种面向企业终端使用者的网络沟通工具服务,交流内容包括文字.界面.语音.视频及文件互发等.相对于个人即时通讯工具而言,企业即时通讯工具因为剔除了娱乐等因素,所以更加强调实用性.安全性 ...

  10. 为什么企业选择局域网即时通讯软件?局域网即时通讯软件哪家好?

    在当今互联网普及的时代,企业内部的沟通对企业管理有着非常重要的意义,即时通讯软件已成为企业工作中广泛采用的沟通工具. 然而,随着企业内部敏感信息通过互联网泄露的频繁发生,例如在工作期间,企业员工自发地 ...

最新文章

  1. iOS之深入解析自动释放池autoreleasepool的底层原理
  2. scala to java_Scala 2.13 以后Java集合与Scala集合互相转换
  3. 前端学习(2767):下拉刷新的学习
  4. iOS项目中的网络请求和上下拉刷新封装
  5. Windows-查看系统安装时间、启停某服务、组策略、限制外部设备命令
  6. ethereum(以太坊)(二)--合约中属性和行为的访问权限
  7. setState的参数接收函数
  8. 小学数学应用题:经典题型归纳50题含解析
  9. Python 文字排版工具
  10. flutter,快速获取ios设备的udid
  11. 可在线接收验证短信的网站
  12. JavaScript学习笔记01——简介(李炎恢JavaScript教程)
  13. 百度大脑大升级:各种算法并驾齐驱
  14. pygame的小飞机游戏终于完成了
  15. Firefox 本地保存密码破解 (破解key3.db, signons.sqlite , key4.db, logins.json)
  16. 叔本华《作为意志和表象的世界》
  17. Android 9.0 (P版本) MTK平台原生的待机智能省电功能
  18. Visual Assist X 破版解,支持VS2017
  19. 常见的字符串的特殊字符处理之英文双引号替换成中文双引号
  20. excel自动排班有假期_Excel假期晚餐时间表

热门文章

  1. 好用的 Sketch 插件 - 收藏集 - 掘金
  2. visio2013画图相关
  3. Android手机端脚本录制
  4. html网站a标签直接下载pdf,不在浏览器打开
  5. ARM体系结构与编程笔记
  6. 小米盒子 计算机共享,教你用局域网共享文件为小米盒子装软件
  7. Centos7镜像官网下载
  8. 一个初级python web后端开发工程师的面试总结
  9. 程序员的五种不同寻常的特质
  10. 通达信版弘历软件指标_弘历主图指标详解 通达信指标