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

article/2025/9/29 2:06:40

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


http://chatgpt.dhexx.cn/article/wkeWnt86.shtml

相关文章

Java实现最简单局域网QQ

Java实现局域网QQ&#xff0c;这是最简单的实现了。整个系统只有一个服务器端和一个客户端&#xff0c;成功建立连接后&#xff0c;服务器端发消息给客户端&#xff0c;客户端发消息给服务器端。最上边的文本框是显示接收到的消息的&#xff0c;左边清屏按钮是把接收区域清空的…

局域网QQ助手,查找局域网在线QQ,支持手机版QQ

局域网QQ助手主要功能是扫描所有当前在线QQ号码 1&#xff0c;可以支持普通路由器&#xff0c;有线路由器(WIFI)等网络环境&#xff0c;二级路由器下的QQ号码一般情况下也可以扫到。 2&#xff0c;可以扫描局域网当前在线的苹果QQ&#xff0c;安卓QQ以及PC版的QQ&#xff0c;支…

局域网内QQ代理设置

在公司上网如果需要通过代理的话&#xff0c;登陆QQ经常出问题&#xff0c;登不上&#xff0c;或者测试连接成功但是登不上&#xff0c;自己试了下&#xff0c;如下图配置代理就可以登上了。当然情况各异&#xff0c;不一定都行得通。 如上图所示&#xff1a;网络设置&#xff…

代码生成器原理

代码生成器原理很简单&#xff0c;用一句话概括就是&#xff1a;将数据库字段转换成Java字段并输出内容。 如下图所示&#xff1a; 因此&#xff0c;首先需要做的是获取表信息以及表的字段信息&#xff0c;一般有两种方式&#xff0c;第一种&#xff1a;连接到数据库&#xff…

【代码生成器】代码生成器原理分析

文章目录 前言1 浅谈代码生成器1.1 概述 1.2 需求分析1.3 实现思路 2 深入FreeMarker2.1 什么是FreeMarker2.2 Freemarker的应用场景2.3 Freemarker的基本使用2.3.1 构造环境2.3.2 入门案例2.3.3 字符串模板 2.4 Freemarker模板2.4.1 概述2.4.2 数据模型2.4.3 模板的常用标签2.…

介绍几款低代码生成器,神器

原文地址&#xff1a; 介绍几款低代码生成器&#xff0c;神器 - 方包博客 - java|python|前端开发|运维|电商|ui设计 国内国外很火爆的代码生成器 1&#xff1a;在线搭建框架-懒猴子CG 官方网址&#xff1a;http://cg.lazy-monkey.com/ 懒猴子代码生成器支持Java,Vue,React,Pyt…

springboot + vue 前后端分离代码生成器,毕设好帮手

hello 大家好&#xff0c;最近搞了一个前后端代码生成器。只需设计好数据库&#xff0c;就可以自动生成前端页面包括图片上传和后端代码。下面给大家介绍一下。 项目环境&#xff1a;jdk8、node12、maven、mysql、vue2 技术介绍&#xff1a;SpringSecurity、SpringBoot、swagg…

如何编写自己的代码生成器(理论篇一)

作者简介 一个很懒很懒的程序员 如何编写自己的代码生成器 我平常开发都会用到代码生成器&#xff0c;本文将介绍如何制作属于自己业务的代码生成工具 代码生成器的作用 一个新的需求开发涉及到的数据库表有可能有很多张&#xff0c;每个都需要去写增删改查后台管理页面有很…

简单代码生成工具

代码生成 我们做项目的时候&#xff0c;经常会碰到写一些基础的增删改查代码&#xff0c;所以就写了个代码生成的工具&#xff0c;可根据自己的需求编写相应的代码模板。 大致思路 查询表信息&#xff0c;通过字段类型映射出 java 类型&#xff0c;然后通过模板生成 java 文件…

自制代码生成器(上)

自制代码生成器原因&#xff1a; •Mybatis自带的自动生成代码&#xff0c;不能自定义&#xff0c;各种命名没法改&#xff0c;不能生成controller、service、jsp等页面 如何写代码生成器—模板引擎velocity Velocity-1.7.jar &#xff1a; 模板引擎 commons的2个jar包 &#…

Mybatis 代码生成器

MBG与Example GitHub - mybatis/generator: A code generator for MyBatis. 我们在项目中使用Mybatis的时候&#xff0c;针对需要操作的一张表&#xff0c;需要创建实体类、Mapper映射器、Mapper接口&#xff0c;里面又有很多的字段和方法的配置&#xff0c;这部分的工作是非常…

Java-代码生成器的实现

文章目录 前言一、概述二、手写代码1. 简要说明2. 代码编写3. 完整代码4. 测试效果 三、项目源码 前言 最近看了一个开源的项目&#xff0c;jfinal-layui&#xff0c;然后这个项目里面有一个 代码生成器 的功能 之前虽然有用过代码生成器&#xff0c;但是从来没有看过相关的源…

MyBatis-Plus代码生成器(新)使用

目录 一&#xff0c;MyBatis-Plus基本简介。 二&#xff0c;特性 三&#xff0c;实现代码自动生成工具 3.1&#xff0c;准备一个初始项目&#xff0c;数据表&#xff0c;连接好数据库 3.2&#xff0c;导入Mybatis-Plus相关依赖 3.3&#xff0c;配置数据库配置文件applicat…

快速上手若依代码生成器(2022)

文章目录 前言一、启动若依框架二、使用代码生成器1 导入示例表2 使用自带的代码生成 生成zip文件2.1 Illegal mix of collations报错解决 三 把zip文件的内容粘贴到对应的模块中3.1 粘贴后台代码3.2 粘贴前台代码3.3 运行菜单sql语句 四 重新启动前端后端总结 前言 快速上手使…

若依代码生成器的使用

一、代码生成器的使用 1.新建maven模块 原则上&#xff0c;我们的业务代码和若依系统本身的系统代码是要做隔离的&#xff0c;一方面是易于之后随着若依系统升级而升级&#xff0c;另一方面则是纯粹的合理性考虑。 这里新建一个ruoyi-business模块作为业务代码模块&#xff0c;…

Java代码生成器

项目说明 本项目基于是基于 renren-generator 定制的代码生成器 文章目录 **项目说明**不同点&#xff1a;效果原理分析如何定制开发&#xff1f;更多可能存在的坑代码地址 不同点&#xff1a; 因为本人的公司使用的是 tkmyabtis swagger 构建 rest api,而 renren-generator…

手把手带你实现一个代码生成器

前言 不知各位看官在工作之中有没有陷入过疯狂CV代码、看着密密麻麻的类不想动手&#xff0c;或者把大把的时间花费在底层的情况。以笔者为例&#xff0c;会经常遇到以下两个问题&#xff1a; 隔一段时间就需要构建一个新应用&#xff0c;需要各种复制粘贴&#xff08;缺乏定…

代码生成器 ----一个独立的代码生成器

这里我就没有过多发废话了&#xff0c;直接给正文。下面是代码生成器的一些简单介绍。操作简单没啥难度。 下面是生成器的地址&#xff0c;谢谢您的使用↓ 代码生成器点这儿。 一、基于简单的数据库属性连接 二、浏览器缓存连接历史 1、可以选择历史连接 2、可以清空所有浏…

如何自定义代码生成器(上)

1 概述 1.1 介绍 ​ 在项目开发过程中&#xff0c;有很多业务模块的代码是具有一定规律性的&#xff0c;例如controller控制器、service接口、service实现类、mapper接口、model实体类等等&#xff0c;这部分代码可以使用代码生成器生成&#xff0c;我们就可以将更多的时间放…

Java快速开发之代码生成器

1、代码生成器原理分析 观察我们之前写的代码&#xff0c;会发现其中也会有很多重复内容&#xff0c;比如: 那我们就想&#xff0c;如果我想做一个Book模块的开发&#xff0c;是不是只需要将红色部分的内容全部更换成Book即可&#xff0c;如&#xff1a; 所以我们会发现&#…