C#局域网聊天程序

article/2025/9/29 1:16:09

【例1】下面演示如何使用C#制作一个局域网聊天程序,程序开发步骤如下:

(1)新建一个Windows应用程序,并命名为11,这时程序自动创建了一个解决方案,名称为11。

(2)将默认创建的Windows 窗体删除,然后在名称为 11 的解决方案下添加一个类和两个 Windows项目。其中,类文件用来封装接收信息和发送信息的方法,两个Windows 项目分别用来作为聊天程序的服务器端和客户端。

(3)类文件的主要代码始下:

public const int port =11000;      //设置端口号
public void StartListener()
{
UdpClient udpclient=newUdpClient(port);
IPEndPoint ipendpoint=newIPEndPoint(IPAddress.Any,port);    //将网络端点表示为IP地址和端口号
try
{
while(true)
{
byte[]) bytes=udpclient.Receive(ref ipendpoint);
string strIP=”信息来自”+ ipendpoint.Address.ToString();
string striInfo =Encoding.GetEncoding("gb2312”).GetString(bytes , 0,bytes.Length); MessageBox.Show(strInfo,strIP);
}
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
finally
{
udpclient.Close();
}
}
public string Send(string strServer,string strContent)
{
Socket socket =new Socket(AddressFamily.lnterNetwork,SocketType.Dgram, ProtocolType.Udp);
IPAddress ipaddress = IPAddress.Parse(strServer);  //将输入的字符串转换为 IP 地址
//将发送的内容存储到byte 数组中
byte[ ]btContent= Encoding.GetEncoding(“gb2312").GetBytes(strContent );IPEndPoint ipendpoint = new IPEndPoint(ipaddress,11000);socket.SendTo(btContent, ipendpoint);
socket.Close();
return "发送成功”;
}

注意

①编写公共类文件时,需要在命名空间区城添加 using System.Text、using System.Net.Sockets.、using System.Net 和 using System. Windows.Forms 命名空间。

②编写完公共类之后,需要使用“csc/t:library类文件名”命令在“Visual Studio 2010 命今提示”工具中将类文件编译为.dll文件,以便在服务器端和客户瑞添加调用。

(4)服务器端主要代码如下:

Class1 class1=newClass1();
private void Form1_Load(objectsender, EventArgs e)
{
this. Hide();       //隐藏当前窗体
class1.StartListener();  //调用公共类中的方法接受信息
}

(5)客户端主要代码如下:

Class1 class1=newClass1();
System.Diagnostics.ProcessmyProcess;
private void Form1_Load(objectsender, EventArgs e)
{
myProcess=System.Diagnostics.Process.Start(“Server.exe”);//开启服务
}
//“发送”按钮事件
private void btnSend_Click(objectsender, EventArgs e)
{
MessageBox.Show(class1.Send(txtServer.Text,txtInfo.Text));     //发送信息
txtInfo.Text=string.Empty.;
txtInfo.Focus();
}
//当在“聊天服务器”文本框中输入内容,按下 Enter 键时,将鼠标焦点移动到“信息”文本框中
private void txtServer_KeyPress(objectsender, KeyPressEventArgs e)
{
If(e.KeyChar==13)
txtInfo.Focus();
}
//当在“信息”文本框中输入内容,按下 Enter 键时,将鼠标焦点移动到“发送”按钮上
private void txtInfo_KeyPress(objectsender, KeyPressEventArgs e)
{
If(e.KeyChar==13)
btnSend.Focus();
}
//窗体关闭事件
private void Form1_FormClosing(objectsender, FormClosingEventArgs e)
{
myProcess.Kill();      //关闭服务
}

程序的运行结果如下图所示。

9d01be35f7985121f7e8555e9e7aca1e.png


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

相关文章

局域网攻击

arp攻击 必要内容 安装arpspoof文件 apt-get install dsniff1.检查以及获取网段 即查看局域网存活主机 fping -asg 192.168.1.1/24 或者-->nmap -sP ip 扫描常用的端口-->nmap -F -sT -v nmap.org注意点: ①攻击者的IP和被攻击者的IP需要在同一个网段中&a…

仿QQ局域网聊天软件

1 目的 想复习一下TCP/IP协议,再结合一下以前学的Qt的知识,加上前段时间学的MySQL数据库操作,所以写了个"仿QQ局域网聊天软件"小项目,只实现了一部分功能,还没写完,后面的功能后面慢慢加,毕竟一口…

同一局域网内怎样获取新来美眉QQ号码!((*^__^*) 嘻嘻……)

看到这个标题,想必有些人已经按耐不住内心的激动,迫切想知道如何在局域网内获取新来美眉的QQ号码的。当然,如果你是程序猿妹子,公司新来的帅哥你也可以大胆的用这种方法获取哦。当然,有的人也许会说获取QQ号有什么用啊…

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

C#即时通讯(局域网QQ) 一:服务器端: private void Form1_Load(object sender, EventArgs e){Control.CheckForIllegalCrossThreadCalls false;}private void button1_Click(object sender, EventArgs e){//ip地址IPAddress ip …

Java实现最简单局域网QQ

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

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

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

局域网内QQ代理设置

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

代码生成器原理

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

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

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

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

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

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

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

简单代码生成工具

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

自制代码生成器(上)

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

Mybatis 代码生成器

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

Java-代码生成器的实现

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

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

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

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

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

若依代码生成器的使用

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

Java代码生成器

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