///发送按钮 /// /// /// privatevoidbutton2_Click(objectsender,EventArgse) { try { IPEndPointclient=(IPEndPoint)this.comboBox1.SelectedItem; if(client==null) { MessageBox.Show("没有选中任何在线客户端!"); return; } if(!this.server.clientCheck(client)) { MessageBox.Show("目标客户端不在线!"); return; } server.sendMessage(client,textBox_msg.Text); } catch(ExceptionEx){MessageBox.Show(Ex.Message);} } /// ///下面显示的 /// /// /// privatevoidshow(IPEndPointipEndPoint,stringstr) { label_zt.Text=ipEndPoint.ToString()":"str; label_all.Text="当前在线人数:"this.server.ClientNumber.ToString(); } /// ///当组合框按下的时候 /// /// /// privatevoidcomboBox1_DropDown_1(objectsender,EventArgse) { try { Listlist=this.server.ClientAll; this.comboBox1.DataSource=list; } catch{} } /// ///关闭客户端的按钮 /// /// /// privatevoidbutton3_Click_1(objectsender,EventArgse) { IPEndPointclient=(IPEndPoint)this.comboBox1.SelectedItem; if(client==null) { MessageBox.Show("没有选中任何在线客户端!"); return; } if(!this.server.clientCheck(client)) { MessageBox.Show("目标客户端不在线!"); return; } server.clientClose(client); } #endregion-IMDN开发者社群-imdn.cn">
///发送按钮 /// /// /// privatevoidbutton2_Click(objectsender,EventArgse) { try { IPEndPointclient=(IPEndPoint)this.comboBox1.SelectedItem; if(client==null) { MessageBox.Show("没有选中任何在线客户端!"); return; } if(!this.server.clientCheck(client)) { MessageBox.Show("目标客户端不在线!"); return; } server.sendMessage(client,textBox_msg.Text); } catch(ExceptionEx){MessageBox.Show(Ex.Message);} } /// ///下面显示的 /// /// /// privatevoidshow(IPEndPointipEndPoint,stringstr) { label_zt.Text=ipEndPoint.ToString()":"str; label_all.Text="当前在线人数:"this.server.ClientNumber.ToString(); } /// ///当组合框按下的时候 /// /// /// privatevoidcomboBox1_DropDown_1(objectsender,EventArgse) { try { Listlist=this.server.ClientAll; this.comboBox1.DataSource=list; } catch{} } /// ///关闭客户端的按钮 /// /// /// privatevoidbutton3_Click_1(objectsender,EventArgse) { IPEndPointclient=(IPEndPoint)this.comboBox1.SelectedItem; if(client==null) { MessageBox.Show("没有选中任何在线客户端!"); return; } if(!this.server.clientCheck(client)) { MessageBox.Show("目标客户端不在线!"); return; } server.clientClose(client); } #endregion - IMDN开发者社群-imdn.cn">
首页 »
C# »
C#实现Socket通讯Demo
于 2021-08-22 发布
0 321
c#通过Socket实现图片、文件和文字的通讯。
private void button1_Click(object sender, EventArgs e)
{
try
{
server = TxStart.startServer(int.Parse(textBox_port.Text));
server.AcceptString = new TxDelegate(acceptString);
server.AcceptByte = new TxDelegate(acceptBytes);
server.Connect = new TxDelegate(connect);
server.dateSuccess = new TxDelegate(dateSuccess);
server.Disconnection = new TxDelegate(disconnection);
server.EngineClose = new TxDelegate(engineClose);
server.EngineLost = new TxDelegate(engineLost);
//server.BufferSize=12048;
//server.FileLog = "C:\test.txt";
server.StartEngine();
this.button1.Enabled = false;
this.button2.Enabled = true;
this.button3.Enabled = true;
}
catch (Exception Ex) { MessageBox.Show(Ex.Message); }
}
///
/// 发送按钮
///
///
///
private void button2_Click(object sender, EventArgs e)
{
try
{
IPEndPoint client = (IPEndPoint)this.comboBox1.SelectedItem;
if (client == null)
{
MessageBox.Show("没有选中任何在线客户端!");
return;
}
if (!this.server.clientCheck(client))
{
MessageBox.Show("目标客户端不在线!");
return;
}
server.sendMessage(client, textBox_msg.Text);
}
catch (Exception Ex) { MessageBox.Show(Ex.Message); }
}
///
/// 下面显示的
///
///
///
private void show(IPEndPoint ipEndPoint, string str)
{
label_zt.Text = ipEndPoint.ToString() ":" str;
label_all.Text = "当前在线人数:" this.server.ClientNumber.ToString();
}
///
/// 当组合框按下的时候
///
///
///
private void comboBox1_DropDown_1(object sender, EventArgs e)
{
try
{
List list = this.server.ClientAll;
this.comboBox1.DataSource = list;
}
catch { }
}
///
/// 关闭客户端的按钮
///
///
///
private void button3_Click_1(object sender, EventArgs e)
{
IPEndPoint client = (IPEndPoint)this.comboBox1.SelectedItem;
if (client == null)
{
MessageBox.Show("没有选中任何在线客户端!");
return;
}
if (!this.server.clientCheck(client))
{
MessageBox.Show("目标客户端不在线!");
return;
}
server.clientClose(client);
}
#endregion
下载说明:请别用迅雷下载,失败请重下,重下不扣分!
-
C#程序设计经典案例设计与实现
《Visual C# 2008程序设计经典案例设计与实现》源码下载 第1章 Visual C#2008与窗体界面案例1 飘动动画窗体案例2 透明动画窗体案例3 利用API函数实现动画窗体案例4 闪烁动画窗体案例5 滚动字幕动画窗体案例6 超女卡通窗体案例7 总在最前的登录窗体案例8 在屏幕中央的圓形窗体案例9 半透明的T形窗体案例10 多文档MDI窗体案例11 渐变色窗体案例12 笑脸窗体案例13 八边形图形窗体本章小结第2章 Visual C# 2008与图形图像案例1 动态绘制直线和曲线案例2 动态绘制验证码案例3 椭圓及椭圆弧的绘制案例4 移动鼠标复制坐标区域图像案例5 动态获取当前程序的图标案例6 动态获取系统图标案例7 动态打开、显示和缩放图像案例8 在图像上动态加载文字案例9 水平和垂直遮罩图像动画效果案例10 图像拉伸动画效果案例11 百叶窗图像动画效果案例12 翻转和扩展图像动画效果案例13 图像的纹理和浮雕效果案例14 图像的马赛克效果本章小结第3章 Visual C#2008与多媒体案例1 抛物线动画效果案例2 图像滚动动画效果案例3 飞舞的雪花案例4 电子时钟案例5 Flash动画播放器案例6 AvI动画播放器案例7 GⅣ动画播放器案例8 MP3音乐播放器案例9 肥皂泡泡屏幕保护程序案例1O 图像随机显示屏幕保护程序案例11 滚动字幕屏幕保护程序案例12 带有背景音乐的随机字幕屏幕保护程序案例13 托盘动画图标程序本章小结第4章 Visual C#2006与数据库案例1 利用DataGridView控件显示数据库信息案例2 数据库数据记录单案例3 利用下拉列表框动态查询数据库信息案例4 利用ListView控件导航数据库信息案例5 带有数据库的会员登录系统案例6 动态添加数据库数据信息案例7 动态修改数据库数据信息案例8 动态删除数据库数据信息案例9 带有图像信息的数据库数据记录单案例10 分页显示数据库中的记录数据信息案例11 连接Excel 2008表格案例12 连接SQL Server数据库本章小结第5章 Visual C#2008的SQL查询与图表技朮案例1 多表连接条件查询案例2 分组条件查询案例3 排序查询案例4 嵌套查询案例5 视图在Select查询语句中的应用案例6 存储过程在Select查询语句中的应用案例7 动态获取数据库中所有视图和存储过程案例8 柱状图表分析图案例9 柱状图表的升序和降序案例10 折线图表分析图案例11 多折线图表分析图案例12 饼形图表分析图本章小结第6章 Visualc#2008的打印与水晶报表技术案例1 利用Windows组件打印数据库中的数据案例2 利用Windows组件打印数据库数据柱状图表案例3 利用Windows组件打印输出图像案例4 调用Word软件打印数据库中的数据案例5 调用Excel软件打印数据库中的数据案例6 利用水晶报表打印数据库中的数据案例7 利用水晶报表分组统计数据库中的数据案例8 利用水晶报表筛选数据库中的数据案例9 图表在水晶报表中的应用本章小结第7章 VisualC#2008与Windows系统设置案例1 任务栏的显示与隐藏案例2 开始按钮的显示与隐藏案例3 动态设置系统输入法案例4 动态设置桌面颜色案例5 动态设置鼠标的属性案例6 动态获取鼠标位置案例7 声卡的检测及声音,音频设备属性的设置案例8 只能运行一次的托盘程序案例9 动态设置程序是否为开机运行案例10 动态设置注册表是否可运行案例11 禁止修改IE浏览器的主页案例12 动态锁定计算机案例13 计算机的注销、关闭和重新启动案例14 动态获取计算机系统基本信息本章小结第8章 VisualC#2008与文件案例1 动态创建文件并输入文件内容案例2 动态打开和保存文件案例3 动态删除文件及清空回收站案例4 动态创建和删除文件夹及显示其是否存在案例5 动态获取文件夹中的文件案例6 动态搜索文件或文件夹案例7 动态显示磁盘容量图表案例8 动态移动文件案例9 动态复制文件案例1O 动态调用可执行EXE文件案例11 动态查看和修改文件属性案例12 动态比较文件本章小结第9章 VisualC#2008算法及控件的应用案例1 利用冒泡算法实现从小到大排序案例2 利用希尔算法实现从大到小排序案例3 判断主机IP合法性算法案例4 欧几里德最大公因子算法案例5 字符串的加密算法案例6 随机生成新身份证算法案例7 利用ListBox控件实现数据源字段的选择案例8 利用LislNiew控件实现图标的管理案例9 利用TreeView控件浏览图像案例10 利用ProgressBar控件实现进度控制案例11 利用Timel控件显示当前时间本章小结第10章 VisualC#2008与网络开发案例1 动态获取本机MAC地址案例2 动态获取本机IP地址案例3 动态网络Ping操作案例4 定时访问互联网案例5 定制网络浏览器程序案例6 动态发送电子邮件案例7 动态读取XMI文件本章小结第11章 VisualC#2008与Web应用程序案例1 利用AdRotator控件随机显示广告图像案例2 利用Calendar控件动态查询系统日期案例3 会员登录系统案例4 利用Application对象实现网站计数器案例5 利用Session对象实现留言板本章小结
- 2016-09-02下载
- 积分:1
-
XLT Unity3D 热修复示例源码
使用ILRuntime实现的类似XLUA功能的Unity3D下热修复BUG的解决方案请使用Unity2019.2.17f1版本打开,其他版本问题,请自行修复报错提示!Unity3D 5.x版本以下可以使用Unity4.7.2分支~ 和XLUA一样的地方和XLUA原理类似,注入和XLUA基本一致。 不一样的地方使用C#来进行代码的热更,避免项目内lua与C#代码交叉混杂,修复BUG时,需要C#一份,lua一份。 目录以及文件说明: Project-----Assets/XIL --- 所有XIL所用到的文件----Assets/XIL/ILSource --- ILRuntime插件源文件----Assets/XIL/Scripts --- 注入以及初始化代码----Assets/XIL/Auto --- 自动生成注入的代码以及自动生成的委托和函数的注册(如有此目录下的脚本报错,则可以直接删除此目录,然后重新生成委托,CLR绑定以及重新注册注入类型)----Hot --- 补丁源文件存放目录----Hot.sln --- 补丁源文件VS解决方案----DyncDll.csproj --- 补丁项目工程文件----Data/DyncDll.dll --- 补丁dll文件----Data/DyncDll.pdb --- 补丁dll的调试文件使用步骤以及菜单项说明:注意:菜单项会根据是否开启热更宏而有所不同 XIL/插件/开启 -- 开启热补丁宏XIL/插件/取消 -- 关闭热补丁宏XIL/插件/PDB开启 -- 加载PDB调试文件XIL/插件/PDB取消 -- 不加载PDB调试文件XIL/注册需要热更的类 -- 生成注入所需要的成员接口XIL/取消需要热更的类 -- 清除注入所需要的成员接口XIL/一键清除 -- 清除自动生成的脚本XIL/一键生成 -- 自动生成委托注册以及注入所需要的脚本XIL/委托自动生成 -- 热更当中操作C#层的委托,需要注册委托相关的类型以及转换代码 这里可自动分析项目当中所有用到的委托,自动注册XIL/清除委托自动生成的脚本 --清除委托自动生成的脚本,删除一些C#脚本,或修改,有可能引起报错,这时可以清除掉自动生成的注册脚本XIL/CLR绑定 -- 非反射的方式调用C#层的接口,可大幅度提高运行效率,一些常用的接口可考虑在GenerateCLRBinding文件当中添加需要CLR绑定的类型。XIL/Hotfix Inject In Editor -- 编辑器下注入接口只需要两步即可1 先开启补丁宏2 点击一键生成初始化以及资源接口1 需要在项目启动或适当位置调用初始化接口:wxb.hotMgr.Init();2 非编辑器下,需要自己创建加载文件的接口,可参考编辑器下的资源加载类EditorResLoad。生成补丁dll1 打开Hot解决方案2 替换DyncDll工程依赖UnityEngine.dll以及UnityEngine.UI.dll的文件,在目录Hot下,默认是Unity2018.2.11f1版本的,可以替换为自己项目对应的版本3 编译运行DyncDll工程,编译成功,即可在Data目录下生成补丁库。如何添加需要热更的类型:1 使用HotfixAttribute属性宏来修饰类型2 默认情况下所有类型都会被热更注入,如需要自己调整,可修改源文件ExportIL.cs里,FixMarkIL接口,自定义需要热更的类型生成静态DelegateBridge字段名称的规则 没有同名函数,则固定使用"__Hotfix_函数名"方式 有多个同名函数,对这些同名函数进行排序,排序规则如下(可参考接口wxb.Editor.Hotfix.getDelegateName的逻辑):1 参数个数少的在前2 进行字符串拼接,组成key值,规则如下"返回值全名 函数名(参数类型全名1,参数类型全名2,...)",之后通过key值比较,理论上,不同函数,key值是不会相同的 排序之后,取得对应函数在数组当中的下标来进行拼接如何,规则如下"__Hotfix_函数名_下标"的方式 为什么排序,主要是希望能够一眼看过去就知道函数对应的下标是多少,方便Hotfix,以及保证源脚本不变的情况下,每次Hotfix生成的字段名是一致的 如何替换函数一般有三种方式 通过函数名直接替换hotMgr.ReplaceFunc,可参考函数HotHelloWorld.Reg 通过自动生成的接口DelegateBridge对应的字段名,可直接使用hotMgr.ReplaceField,可参考函数HotHelloWorld.Reg 通过添加属性来自动注册,可参考脚本HotHelloWorld.cs与HotTemplate.cs,这里简单说明下, 要替换一个接口,要知道至少三个信息 替换的原类型 替换的接口对应的DelegateBridge字段的名字 热更当中,要替换的MethodInfo可添加属性ReplaceType到热更的类当中,表示此类型下的接口,默认替换的类型可添加属性ReplaceFunction到热更的接口当中,表示此接口需要替换哪个类型的哪个接口,可使用三种方式初始化1 ReplaceFunction(System.Type type) 替换type类型下同名的接口2 ReplaceFunction() 替换ReplaceType类型下同名的接口3 ReplaceFunction(string fieldNameOrTypeName), fieldNameOrTypeName值前缀不同,有不同的含义 a __Hotfix_开头,替换ReplaceType类型fieldName字段对应的接口 b 替换类型全名为fieldNameOrTypeName下同名的接口4 ReplaceFunction(System.Type type, string fieldName) 替换type类型fieldName字段对应的接口5 ReplaceFunction(string type, string fieldName) 替换类型全名为type下fieldName字段对应的接口 一般在没有同名函数情况下,可使用1,2种方式注册,有些类型为非公有类型的,可通过3,5接口,通过类型名来注册有同名函数情况下,就需要使用3,4, 5方式进行注册,可参考HotHelloWorld.cs脚本 通过属性进行自动注册的,假如在类型中含有对应DelegateBridge静态字段的Hotfix变量,则会自动对此变量进行赋值,保存一些参数在实际使用补丁方式热更时,经常遇到一些,只是需要在原有函数之前或之后添加一些代码的情况,这时,你可以通过Hotfix来执行原先代码可参考HotHelloWorld.Start的使用建议使用第3种方式进行接口替换 建议:最好安装下.NET Reflector,可用来反编译被注入的dll,查看源文件,可加深理解XIL的实现原理。项目下文件Library/ScriptAssemblies/Assembly-CSharp.dll这u3d生成的dll文件,原理上,也是修改此文件实现热更新功能,可使用.NET Reflector进行反编译查看源码 热更下模拟MonoBehaviour组件,用法可以参考hotScripts下脚本,可以做到平时在非热更环境下开发调试,到要发版本时再转换为热更方式Unity5.6以下版本,编辑器下使用的Mono库,会报错,应该是Unity3D的Bug。可以使用源文件来替换dll,源文件在压缩包Mono.Cecil.zip下,可解压此文件,放到在Assets/XIL/Scripts/ILHotfix/Editor/下,并删除这三个Dll(Mono.Cecil.dll, Mono.Cecil.Mdb.dll,MonoCecil.Pdb.dll)
- 2020-11-27下载
- 积分:1
-
C++ 使用SOME谓词引入子查询(提高篇-实例340).zip
C++ 使用SOME谓词引入子查询(提高篇-实例340).zip
- 2019-10-02下载
- 积分:1
-
C# 仪表盘 例子源码
C# 仪表盘 例子源码
- 2014-11-04下载
- 积分:1
-
半透明示例
半透明示例
- 2013-12-01下载
- 积分:1
-
C# 雷塞运动控制卡圆弧插补
C# 雷塞运动控制卡圆弧插补
- 2016-12-26下载
- 积分:1
-
c# 多任务网段扫描 实例源码
c# 多任务网段扫描 实例源码
- 2014-12-12下载
- 积分:1
-
javascript 调用wcf示例源码下载
javascript 调用wcf示例源码下载
- 2014-06-07下载
- 积分:1
-
图书管理
图书管理
- 2015-12-30下载
- 积分:1
-
记账本-记账助手完整源码下载(含安装包项目)
还不错啊,记账助手
- 2014-03-28下载
- 积分:1