socket多人聊天程序

时间:2019-05-14 02:10:20下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《socket多人聊天程序》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《socket多人聊天程序》。

第一篇:socket多人聊天程序

实现思路

服务器端

1.用一个Map保存“在线的用户”,键——用户的名称

值——当前用户对应socket对象

2.为每一个接通的客户端(socket对象)开通一条线程,这条线程绑定的任务是: 读取客户端发送的消息 然后再发送每个用户

(我们可以认为这个Map就是一个聊天室,map中的一个成员就是一个用户);获得当前客户端发送过来的信息, 当前“聊天室”内的所有“用户”都接收到信息。

当某用用户断开连接表明此用户离开了, 为这个用户开通的这条线程结束,同时需要释放资源,所以在finnaly块中要 关闭流对象, 将此用户移除Map,同时广播某某人离开了如:客户端

客户端第一次登录必须先输入用户名并发送给服务器注册

System.out.println(“请输入用户名:”);

userName = get.readLine();

pw.println(“1-”+userName);

然后发送消息:

公聊pw.println(“2-”+username+“-”+消息内容);私聊pw.println(“3-”+username+“-”+收消息人名字+“-”+消息内容);

那么服务端 读取客户端的消息后分隔字符串msg =bufRead.readLine()String[] arrMsg=msg.split(“-”);arrMsg[0]是标识arrMsg[1]就是用户名 判断标识:

* 服务器收到消息 1开头表示新加入的聊天用户

2开头表示公聊消息;

3开头表示私聊消息

标识是1, 新用户登录,获得当前客户端的用户名,加入到Map中并给每个用户广播某某登录了客户端发送格式:1-用户名标识是2是公聊的消息,则将此消息转发给所有用户 客户端发送消息的格式是:2-用户名=消息内容标识是3是私聊的消息,则将此消息转发给指定用用户 客户端发送消息的格式是:2-发送者-接收者-消息内容分隔字符串后arrMsg[1]消息发送者,arrMsg[2]收消息者 arrMsg[3]消息内容

客户器端

1.首先输入用户名向服务器注册

2.定义菜单选择是公聊或私聊

3.启用一个线程负责读服务器广播的消息

4.循环向服务器发送消息 根据收消息者的名称 到Map中找到对应的Socket ,向收消息者发送消息msg=arrMsg[1] +“对你说:”+ arrMsg[3] 根据发送者的名称 到Map中找到对应的Socket ,向发送者发送消息msg=“你对” + arrMsg[2] +“说:”+ arrMsg[3]

第二篇:多人食物中毒程序

三矿多人食物中毒演练程序

一、演练时间、地点及单位

1、时间:2011年6月28日上午9时

2、地点:矿院内职工食堂

3、演练单位:服务二队、职工医院、保卫科、行政科

二、参演单位及范围

1、范围:职工食堂后院、服务二队会议室

2、单位:服务二队八点班人员

3、设置警戒位置及人员

4、由保卫科负责警界设置在职工食堂东门口、职工食堂南门口和职工食堂餐厅门口处。

三、演练步骤

1、服务二队

(1)报警:6月28日上午8时55分,由服务二队领导王体伟向调度室报警(职工食堂有3名就餐职工出现食物中毒症状)。

(2)由服务二队王体伟负责组织人员迅速采取措施封存食物保护现场和中毒人员抬运工作。

2、调度室

(1)接警:接警及时,记录准确详细。

(2)处警:通知指挥部成员和各专业组负责人到指挥部(调度室)集结。

(3)及时传达指挥部指令和接听现场指挥部汇报,并收集食

物中毒现场相关信息,传达指令、接听汇报及时,同时进行复述并详细记录。

3、指挥部

(1)集结:指挥部成员及各专业组负责人接到调度室通知后,五分钟内到达指挥部。

(2)召开会议:研究制定抢险救援方案(服务二队由王体伟带领8人,负责食物中毒人员抬运工作,保护现场按规定程序处置现场污染物和污染设施;职工医院由夏玉林带领6人在服务二队临时抢救点对食物中毒人员进行救治和转运;保卫科由马金坡带领6人负责现场警戒;由行政科孟建刚组织职工医院夏玉林,保卫科马金坡,确定污染物并监督污染物的处理),并立即启动救援预案。

(3)指挥长下达指令:指挥部决定设置现场指挥部,由后勤副总汪和平负责担任现场指挥部指挥长,随时和调度室联系(接受任务和复命)

4、现场指挥部

(1)保卫科:人员到达指定位置后,马金坡立即向现场指挥长汪和平汇报,警戒人员6人已达到位置请指示,现场指挥长命令立即按指定位置布置警戒。

(2)服务二队:人员到达指定位置后,王体伟立即向现场指挥长汪和平汇报,服务二队参演人员已达到位置请指示,现场指挥长命令立即展开保护现场,食物中毒人员抬运和污染物处理工作。

(3)职工医院:人员到达指定位置后,夏玉林立即向现场指挥长汪和平汇报,医务人员6人已达到位置请指示,现场指挥长命令

立即展开食物中毒人员的救治和转运。

(4)行政科:人员到达指定位置后,孟建刚立即向现场指挥长汪和平汇报请指示,现场指挥长命令立即展开确定污染物并监督处理。

(5)服务二队:中毒人员抬运完毕、污染物处理后,王体伟向现场指挥长汪和平汇报;职工医院:食物中毒人员现场抢救和转运工作结束后,夏玉林向现场指挥长汪和平汇报;行政科:污染物已在监督下处理完毕后,孟建刚向现场指挥长汪和平汇报。

现场指挥长汪和平向指挥部(调度室)指挥长汇报职工食堂食物中毒人员已救治和转运,现场污染物已处理完毕,请指示。

5、指挥部接到现场指挥长的汇报,宣布演练结束

四、演练评估

1、调度室评估(由安质科张晓辉、王 万负责)。

2、现场评估(由工资科张慧硕、行政科刘怀胜负责)。

五、演练警示告知 张贴公告或会议通知。

附:应急演练指挥部成员各专业组负责人名单及联系方式 成 员 办公室 手机号 李 涛: 2733122 *** 曹其俭: 2733322 *** 程付刚: 2733243 *** 杨占卿: 2733118 *** 田志轩: 2733223 *** 代 峰: 2733236 *** 汪和平: 2733351 *** 曹恒山: 2733332 *** 李 荣: 2733137 *** 赵鹏喜: 2733516 *** 物资供应组: 任铁军: 2733326 *** 医疗救护组: 夏玉林: *** 安全保卫组: 王延星: 2733355 *** 后勤服务组: 孟建刚: 2733369 ***

当日值班:田志轩 刘春伟 李胜利 张跃峰 张光强

刘宪锋 白龙泉

第三篇:计算机网络课程设计(简单聊天程序的实现)

编号:

计算机网络课程设计说明书

目:

本地计算机网络信息管理 系

别:

计算机科学与技术

业:

计算机科学与技术

学生姓名:

xxx

号:

00000000000

指导教师:

xx

2011年月日

摘要

本机网络信息管理器提供了有关计算机性能的信息,并显示了计算机上主要设备信息;如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。它的用户界面提供了设置网络信息的选项,其下还有具体的内容设置,而且这里可以查看到当前系统的CPU使用比率、内存等数据,默认设置下系统每隔两秒钟对数据进行1次自动更新。

目录

1.绪论 ………………………………………………………………………………01 1.1 IP/TCP协议常识

…………………………………………………………08 1.2 Socket的简介

……………………………………………………………09 2.规划设计 …………………………………………………………………………11 2.1 课题来源 ……………………………………………………………………11 2.2 需求分析

…………………………………………………………………11 3.系统分析与设计方案 ……………………………………………………………12 3.1 聊天系统的总体设计要点

………………………………………………12 3.2 聊天系统的设计步骤及功能模块划分 ……………………………………12 3.3 功能模块结构图

…………………………………………………………13 4.系统设计环境与测试

…………………………………………………………26 4.1 开发环境和工具

…………………………………………………………26 4.2 硬件环境 ……………………………………………………………………26 4.3 聊天系统的测试

…………………………………………………………26 5.课程设计总结 ……………………………………………………………………28 5.1 课程设计总结 ………………………………………………………………28 5.2 经验和感想 …………………………………………………………………28 参考文献 …………………………………………………………………………31

计算机网络课程设计报告绪论

随着互联网逐步普及,人们的生活和工作也越来越离不开信息网络的支持,而聊天室是人们最常见,最直接的网上交流的方式。本信息管理系统以网络设置为主,为广大用户提供一个简洁的、方便的网络设置方式,也是使网络设置更简单,更适用于对电脑了解不多的用户。本文所介绍的网络信息管理系统是基于开放的C#应用程序开发设计的,其主要特性是能动态、实时的完成信息的传递,且具有高效的交互性,更有效的反映本机的网络设置状况,易于维护和更新,其运行所需环境及其工作流程和各个功能控件的工作原理将在本文依次介绍,并且文中提供了部分程序源代码。

1.1 IP/TCP协议常识

(1)IP、TCP协议的特点:

TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议/网际协议的缩写, TCP/IP是当今网络互联的核心协议。TCP/IP协议的体系结构共有四个层次,即应用层、传输层、网络互联层和网络接口层。

IP协议的作用:第一,它是网络层的协议,提供互联网上数据传输的统一格式。第二,提供不可靠的无连接的服务。第三,定义了互联网上的传输数据的基本单元,提供了供路由选择的信息,没有差错校验和处理的机制。

TCP协议的功能:差错控制——可靠性、面向连接、分段(Segment)、端口号。TCP是传输控制协议,是面向连接的提供了一种可靠的传输服务,它用三次握手和滑动窗口机制来保证传输的可靠性,及进行流量控制。

TCP/IP协议具有以下特点:

1、协议标准具有开放性,其独立于特定的计算机硬件及操作系统,可以免费使用。

2、统一分配网络地址,使得每个TCP/IP 设备在网络中都具有唯一的IP地址。

3、实现了高层协议的标准化,能为用户提供多种可靠的服务。(2)TCP/IP协议进行传输数据传输的过程:

应用程序为了传输数据会调用TCP,将数据和对应的参数传给TCP,将TCP 数据包封装在IP包内,通过网络送给目的TCP。接收方TCP在接收到数据后通知上层应用程序,TCP将保证接收数据的正确性。在实现TCP的主机上,TCP可以被看成是一个模块,和文件系统区别不大,TCP 也可以调用一些操作系统的功能,TCP不直接和网络打交道,控制网络的任务由专门的设备驱动模块完成。TCP只是调用IP接口,向TCP提供所有TCP需要的服务。

(3)端口号:

计算机网络课程设计报告

有的时候,一个ip地址不能完整的标识一台服务器,这是应为一台物理性的计算机同时运行着多个应用程序,这就需要我们来区别同一台机子上的不同的服务,所以就在传输层和应用层上设置接口,就是 端口。端口实际是一个16位长的 地址,他的范围是0~65535之间,其中0~1023是熟知端口,主要是给提供服务的应用程序使用,这些端口是所有应用进程都只道的,1024~65535为一般端口,也称动态端口、连接端口,用来随时分配要求通信的个客户端应用程序。在数据传输过程中,各种服务器不断的检测分配给他的端口,一边发现要求和他通信的客户端。

1.2 Windows Management Instrumentation,Windows 管理规范

WMI(Windows Management Instrumentation,Windows 管理规范)是一项核心的 Windows 管理技术;用户可以使用 WMI 管理本地和远程计算机。

Windows 2K/XP和Windows 98 都支持WMI;如果为NT 4.0和Windows 95加上了 Service Pack 4或更高版本,N

WMI T 4.0和Win95也支持WMI。因此,用WMI进行远程管理时,并非一定要用Windows 2K/XP(当然,如果WMI脚本在一台没有性能监视器的Win9x机器上运行,就不能在远程Win9x系统上查询Windows 2K/XP的性能监视器。

如前所述,WMI允许通过一个公共的接口访问多种操作系统构成单元,因此不必分别对待各种底层接口或所谓的“提供者”。利用WMI可以高效地管理远程和本地的计算机;与此相对,并非所有的Windows 2K/XP命令行工具都支持远程运行。

WMI是WBEM模型的一种实现。WBEM即Web-Based Enterprise Management,或基于Web的企业管理,WBEM由DMTF(Distributed Management Task Force,分布式管理任务组)在许多厂商的帮助下创立,包括Compaq、Sun、Microsoft等。WBEM的目标是,为管理企业环境开发一个标准的接口集。WBEM模型最关键的部分是它的数据模型(或描述和定义对象的方式)、编码规范(Encoding Specification),以及在客户端和服务器端之间传输数据的模式。

WBEM的数据模型是CIM(Common Information Model,公共信息模型)。CIM是一个用来命名计算机的物理和逻辑单元的标准的命名系统(或称为命名模式),例如硬盘的逻辑分区、正在运行的应用的一个实例,或者一条电缆。

CIM是一个面向对象的模型,使用一组面向对象的术语进行描述。CIM包含类(Class),计算机网络课程设计报告

类是被管理单元的模板。类的实例称为对象(Object),对象代表着底层系统的一个具体单元。名称空间(Namespace)是一个类的集合,每个名称空间面向一个特定的管理领域。类包含属性(Property)和方法(Method)。

CIM分三层。第一层是核心模型(Core Model),这一层包含的类定义对于所有管理领域来说都是共同的。第二层是公共模型(Common Model),这一层包含的类定义对于特定的管理领域来说是公共的,但与具体的操作系统和系统设计无关。第三层是扩展模型(Extension model),这一层包含的类定义与特定的操作系统或技术有关。

WMI是Microsoft扩展CIM 2.0得到的面向Win32系统的扩展模型。引用WMI类和属性的形式是“扩展前缀_类名称.属性名称”,例如Win32_ComputerSystem.Name,其中Win32是CIM模式cimv2名称空间内WMI扩展类的前缀,ComputerSystem是类,Name是属性。

编写WMI脚本的很大一部分工作涉及到读取和设置属性值。当前,WMI提供的方法还很有限,但随着时间的推移,相信WMI和CIM提供的方法都会越来越丰富。2 规划设计

本信息管理系统分为三个部分:

1.首先是,是对本机的基本信息的获取,包括CPU、内存等,以及网络信息的获取,包括域名、工作组等,最后还用CPU、内存等使用情况的监视。

2.其次,是对本机的所有可用网络适配器的设置,包括IP地址、子网掩码、DNS服务器地址等等。

3.然后,是对本机的共享内容的管理,包括共享文件夹的添加和取消,网络服务的查看等。

4.最后,是对所有本机网络连接的监控和统计。系统分析与设计方案

3.1 信息管理系统的总体设计要点

1.本系统以实用为主,实现的都是用户最常用的功能,简化了系统自带的软件的使用。2.本系统界面设计直观,易用性强。

3.2 系统各功能模块

(1)本机基本信息获取

使用了PerformanceCounter和WMI等方式获取系统信息,以及通过读取注册表读取本机操作系统信息,通过线程的方式监控系统性能。

源码:

计算机网络课程设计报告

PerformanceCounter pc = new PerformanceCounter(“Memory”, “Available MBytes”);

PerformanceCounter cpu = new PerformanceCounter(“Processor”, “% Processor Time”, “_Total”);

Thread m_thread;

[DllImport(“IpHlpApi.dll”)]

extern static public uint GetIfTable(byte[] pIfTable, ref uint pdwSize, bool bOrder);

public Form1()

{

new Form2().Show();

InitializeComponent();

RegistryKey rk;

DirectoryEntry root = new DirectoryEntry(“WinNT:”);

string strDomain = null, cpuid = null, meo = null;

foreach(DirectoryEntry Domain in root.Children)

{

//枚举工作组或域

strDomain = strDomain + “ ” + Domain.Name;

}

ManagementClass mClass = new ManagementClass(“Win32_Processor”);

计算机网络课程设计报告

ManagementObjectCollection moCollection = mClass.GetInstances();

foreach(ManagementObject mObject in moCollection)

{

cpuid += mObject[“Name”].ToString()+ “ ”;

}

mClass = new ManagementClass(“Win32_PhysicalMemory”);

moCollection = mClass.GetInstances();

foreach(ManagementObject mObject in moCollection)

{

meo += mObject[“Capacity”].ToString();

}

rk = Registry.LocalMachine.OpenSubKey(“SoftwareMicrosoftWindows NTCurrentVersion”);

label6.Text = System.Environment.MachineName;

label8.Text = System.Net.Dns.GetHostEntry(“LocalHost”).HostName;

label9.Text = rk.GetValue(“ProductName”).ToString()+ “ ” + rk.GetValue(“CurrentVersion”).ToString()+ “.” + rk.GetValue(“CurrentBuildNumber”).ToString();

label10.Text = strDomain;

label11.Text = cpuid;

计算机网络课程设计报告

label12.Text = meo + “ 字节”;

progressBar1.Maximum =(int)(float.Parse(meo)/ 1048576.0);

m_thread = new Thread(new ThreadStart(workr));

m_thread.IsBackground = true;

m_thread.Start();

ManagementClass mc = new ManagementClass(“Win32_NetworkAdapterConfiguration”);

ManagementObjectCollection moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if((bool)mo[“IPEnabled”] == true)

comboBox1.Items.Add(mo[“Description”].ToString());

}

comboBox1.Enabled = true;

计算机网络课程设计报告

mc = new ManagementClass(“Win32_Service”);

moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if(mo[“StartName”].ToString()== “NT AUTHORITYNetworkService”)

comboBox2.Items.Add(mo[“Caption”].ToString());

}

comboBox2.Enabled = true;

mc.Dispose();

moc.Dispose();

maskedTextBox1.AllowPromptAsInput = false;private delegate void dfun();

private void workr(){ while(true){ Thread.Sleep(500);work();} }

private void work()

{

if(this.progressBar1.InvokeRequired && this.progressBar2.InvokeRequired)

{

try

计算机网络课程设计报告

{

dfun df = new dfun(work);

this.Invoke(df);

}

catch { };

}

else

{

this.progressBar1.Value =(int)this.pc.NextValue();

this.label13.Text = this.progressBar1.Value.ToString()+ “MB / ” + this.progressBar1.Maximum.ToString()+ “MB”;

this.progressBar2.Value =(int)cpu.NextValue();

this.label16.Text = DateTime.Now.ToString();

}

}

(2)网络设置部分主要通过WMI获取和设置本机网络适配器的信息和设置,可以自动获取当前可用的适配器,同时,能对不符合规范的的设置进行提示。具体的源码如下:

e)

{

private void comboBox1_SelectionChangeCommitted(object sender, EventArgs

计算机网络课程设计报告

ManagementObjectSearcher query = new

ManagementObjectSearcher(“SELECT

*

FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'”);

ManagementObjectCollection queryCollection = query.Get();

foreach(ManagementObject mo in queryCollection)

{

if(mo[“Description”].ToString()== comboBox1.Text)

{

string[] ipad =(string[])mo[“IPAddress”];

label23.Text = ipad[0];

string[] subnets =(string[])mo[“IPSubnet”];

label24.Text = subnets[0];

string[] defaultgateways =(string[])mo[“DefaultIPGateway”];

if(defaultgateways!= null)

label27.Text = defaultgateways[0];

else label27.Text = “";

label26.Text = mo[”MACAddress“].ToString();

string[] dns =(string[])mo[”DNSServerSearchOrder“];

if(dns!= null)

label28.Text = dns[0];

else if(dns == null)

label29.Text = ”“;

else if(dns.Length == 2)

label29.Text = dns[1];

else { label29.Text = ”“;}

}

}

}

/*

private void button3_Click(object sender, EventArgs e)

{

计算机网络课程设计报告

string[] mac = maskedTextBox5.Text.Split(':');

string pstr = ”^[0-9a-fA-F]+$“;

string ma=”“;

for(int n = 0;n < 5;n++)

if(!Regex.IsMatch(mac[n],pstr))

{

MessageBox.Show(”MAC地址为16进制,即00~FF“, ”错误“);

goto L1;

}

else ma += mac[n]+”:“;

ma = ma.Substring(0, ma.Length1);

gat = true;

}

if(!maskedTextBox7.Text.Equals(pstr))

{

for(int n = 0;n < 4;n++)

if(int.Parse(dns[n])> 255 || int.Parse(gate[n])< 0)

{

MessageBox.Show(”IP数值不对!数值为1~255“, ”错误“);

goto L4;

计算机网络课程设计报告

}

for(int i = 0;i <= 3;i++)

{

DnsStr +=(dns[i].Trim()+ ”.“);

}

DnsStr = DnsStr.Substring(0, DnsStr.Length1);

dnb = true;

}

ManagementClass

mc

= ManagementClass(”Win32_NetworkAdapterConfiguration“);

ManagementObjectCollection moc = mc.GetInstances();

foreach(ManagementObject mo in moc)

{

if((bool)mo[”IPEnabled“])

{

if(mo[”Description“].ToString()== comboBox1.Text)

{

new

计算机网络课程设计报告

if(gat == true)

{

ManagementBaseObject mo.GetMethodParameters(”SetGateways“);

newGate[”DefaultIPGateway“] = new string[] { GateStr };

ManagementBaseObject mo.InvokeMethod(”SetGateways“, newGate, null);

label27.Text = mo[”DefaultIPGateway“].ToString();

}

if(dn == true)

{

string[] temp =(string[])mo[”DNSServerSearchOrder“];

ManagementBaseObject mo.GetMethodParameters(”SetDNSServerSearchOrder“);

newDns[”DNSServerSearchOrder“] = new string[] { DnsStr, temp[1] };

ManagementBaseObject mo.InvokeMethod(”SetDNSServerSearchOrder“, newDns, null);

temp =(string[])mo[”DNSServerSearchOrder“];

label28.Text = temp[0];

}

if(dnb == true)

{

string[] temp =(string[])mo[”DNSServerSearchOrder“];

ManagementBaseObject mo.GetMethodParameters(”SetDNSServerSearchOrder“);

newDnsb[”DNSServerSearchOrder“] = new string[] { temp[1], DnsbStr };

ManagementBaseObject mo.InvokeMethod(”SetDNSServerSearchOrder“, newDnsb, null);

temp =(string[])mo[”DNSServerSearchOrder“];

label29.Text = temp[1];

}

mo.Dispose();

setDnsb

=

newDnsb

=

setDns

=

newDns

=

setGate

=

newGate

=

计算机网络课程设计报告

}

}

}

string[] str = maskedTextBox1.Text.Split('.');

string[] str1 = maskedTextBox4.Text.Split('.');

ManagementClass

mc1

=

new ManagementClass(”Win32_NetworkAdapterConfiguration“);

ManagementObjectCollection moc1 = mc.GetInstances();

if(255 < int.Parse(str[0])|| 255 < int.Parse(str[1])|| 255 < int.Parse(str[2])|| 255 < int.Parse(str[3])|| int.Parse(str[0])< 1 || int.Parse(str[1])< 0 || int.Parse(str[2])< 0 || int.Parse(str[3])< 1 ||

255 < int.Parse(str1[0])|| 255 < int.Parse(str1[1])|| 255 < int.Parse(str1[2])|| 255 < int.Parse(str1[3])|| int.Parse(str1[0])< 1 || int.Parse(str1[1])< 0 || int.Parse(str1[2])< 0 || int.Parse(str1[3])< 0)MessageBox.Show(”IP数值不对!数值为1~255“, ”错误“);

else

foreach(ManagementObject mo in moc1)

{

if((bool)mo[”IPEnabled“])

{

if(mo[”Description“].ToString()== comboBox1.Text)

{

string IPStr = ”“, subStr = ”“;

for(int i = 0;i <= 3;i++)

{

IPStr +=(str[i].Trim()+ ”.“);

}

for(int i = 0;i <= 3;i++)

{

subStr +=(str1[i].Trim()+ ”.“);

}

IPStr = IPStr.Substring(0, IPStr.Length1);

ManagementBaseObject

newIP

=

计算机网络课程设计报告

mo.GetMethodParameters(”EnableStatic“);

newIP[”IPAddress“] = new string[] { IPStr };

newIP[”SubnetMask“] = new string[] { subStr };

ManagementBaseObject setIP mo.InvokeMethod(”EnableStatic“, newIP, null);

label23.Text = IPStr;

label24.Text = subStr;

mc.Dispose();

}

}

}

L4:;

}

private void button4_Click(object sender, EventArgs e)

{

ManagementClass

wmi

= ManagementClass(”Win32_NetworkAdapterConfiguration“);

ManagementObjectCollection moc = wmi.GetInstances();

foreach(ManagementObject mo in moc)

{

//如果没有启用IP设置的网络设备则跳过

if(mo[”Description“].ToString()!= comboBox1.Text)

continue;

//重置DNS为空

mo.InvokeMethod(”SetDNSServerSearchOrder“, null);

//开启DHCP

mo.InvokeMethod(”EnableDHCP", null);

}

=

new

计算机网络课程设计报告

} 4 系统设计与实现 4.1开发环境工具

基本系统的设计主要运用C#与语言与WMI类结合而开发。其开发的主要环境包括:

操作系统:Windows 7 集成开发环境:Microsoft Visual Studio 2010和.NET Framework 4.0 使用环境: Windows 2K/XP以上和.NET Framework环境

4.2 硬件环境

本系统运行环境所需用到的环境为: 硬件配置 :

CPU:intel core duo t6400 2.0G的处理器; 硬

盘:160GB以上硬盘; 内

存:2G DDR内存;

卡:NVIDIA Geforce 9600M GS 512M显存显卡

软件环境:WINDOWS XP、Visual Studio 2010、.NET Framework4.0等。

4.3网站功能模块的测试

图1 本机信息获取

计算机网络课程设计报告

图2 网络设置

图3 共享设置

图4 网络监控 总 结

计算机网络课程设计报告

5.1 课程设计总结

本课程设计实现了简单的本机网络系统的管理功能,经过细心的调试和排错解决了绝大部分的问题。但几乎每一个计算机程序都会有这样那样的不足,尤其是未经过精心维护的非商业软件。本管理系统程序对于初涉此领域的毕业设计课题来说,尤其在开始初期,感觉系统调用复杂,难以控制,因此至今还有许多未能解决的缺陷。

目前本管理系统还有待完善的功能如下:

1、没有做到每个进程的网络流量的实时监控;

2、没有实现进程管理;

3、没有考虑到安全问题。

尽管课程设计到现在已接近尾声,但是对于上述的缺陷,本人还会不断对系统进一步的完善它,期望在今后的日子里凭借自身的技术把系统做成一套深受欢迎的系统设置软件。

5.2 经验和感想

基于C#和WMI天程序作为课程设计,是本人目前做过的最大的程序。

平时自己也常到其它系统优化软件,因此,自己也曾想过要制作一款自己的系统管理软件。学习该平台背景和功能的时间远远超出了我想象的时间。在学习期间,本人还通过网上的各种C#源码进行学习与研究,我原以为这样的设计水平将无法完成设计,但当掌握了大部分应用技巧时,剩下的系统思路的设计就显得不是最大的障碍了。

我在2周内写完这个程序,经过了很多次的调试,终于完成了现在的程序。原先认为不可能的事,我发现,如果有不畏困难的信心和肯钻研的勇气,就一定会完成,甚至达到意想不到的效果。

献 C#应用程序设计教程 作 者: 耿肇英 耿燚 耿肇英 耿燚 2 Visual C#程序设计实用教程 作 者: 杨建军

第四篇:socket编程实验心得体会

实验心得体会

在本次实验中,我通过对网络课上所学知识的应用,学到了很多实践中的知识。并且加深了我对课本知识的理解和认识,在实验过程中,更容易记忆和深入理解各种协议的工作以及在网络编程中应该注意的一系列问题。

我们的第一个实验是对ARP、ICMP、FTP和HTTP协议的分析和验证。在利用软件Etherpeek抓取在主机通信中的报文,得到了很多的关于这些协议的具体参数。在课程学习过程中,书本和老师给我的感觉就是太枯燥,通过课本的学习根本没有办法理解各种协议的工作细节。有很多的细微之处是想不通的。但是,在本次实验中,我就通过各种报文的分析,看到了网络中不同层次协议之间的协做过程。对应不同层之间就是通过协议来使用,我对整个网路的大体架构有了一个统筹的了解,虽然对很多的更深入的知识不是很了解,但是比我在课上学的东西要更有趣,而且容易学习,更能够我学习的兴趣。

第二个实验是Socket编程实验。在编写网络程序之前,我对网路通信可以说一无所知,根本不知道那些网路上的程序是怎么通过网路进行通信的。在本次实验中,终于揭开了他们神秘的面纱。当然在实验中出现了很多的插曲,我是在Linux环境下编写的程序,很多技术方面的问题都无法解决。查阅书籍和网上咨询才弄懂了他们的来龙去脉,最终是将我的程序编写完了。开始接触网路编程时,那是一头雾水,根本不知从何下手。在看了辅导教员给我们程序之后才有了很多的起色,才能够自己编写程序。在网络编程中,我最深的体会就是对具体的内部细节不熟悉,导致在调试的过程中感觉到很无力。在很多函数的作用下,经常就是一团乱麻。之后,我每次编写之前就是将用到的函数的用法温习一下,最后还是能够解决很多的问题的。

本次试验是我们学习网路的第一次。以前的课程从来没有接触到网路方面的知识。这次的新知识对我们的挑战还算不是太大,通过我们的努力,所有的困难时被克服掉了。其实,实验应该是我们的重点,在以后的工作中要的就是我们的实际的动手能力,如果我们在学习期间就是只学了书本上的知识,那样对理论的了解是不够深刻的,只有通过实验才能激发我们的学习兴趣。总之,我觉得实验才是检验理论的唯一标准。

第五篇:c语言简单socket通信

server:

#include

#include

#pragma comment(lib,“ws2_32.lib”)

int main(int argc, char* argv[]){

//³õʼ»¯WSA

WORD sockVersion = MAKEWORD(2,2);WSADATA wsaData;if(WSAStartup(sockVersion, &wsaData)!=0){return 0;} //´´½¨Ì×½Ó×Ö SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(slisten == INVALID_SOCKET){printf(“socket error!”);return 0;} //°ó¶¨IPºÍ¶Ë¿Ú sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = INADDR_ANY;if(bind(slisten,(LPSOCKADDR)&sin, sizeof(sin))== SOCKET_ERROR){printf(“bind error!”);} //¿ªÊ¼¼àÌý if(listen(slisten, 5)== SOCKET_ERROR){} //Ñ-»·½ÓÊÕÊý¾Ý SOCKET sClient;sockaddr_in remoteAddr;printf(“listen error!”);return 0;

char revData[255];while(true){printf(“µÈ´ýÁ¬½Ó...n”);sClient = accept(slisten,(SOCKADDR *)&remoteAddr, &nAddrlen);if(sClient == INVALID_SOCKET)

{

printf(“accept error!”);

continue;

}

printf(“½ÓÊܵ½Ò»¸öÁ¬½Ó£º%s

inet_ntoa(remoteAddr.sin_addr));

//½ÓÊÕÊý¾Ý

int ret = recv(sClient, revData, 255, 0);

if(ret > 0)

{

revData[ret] = 0x00;

printf(revData);

}

//·¢ËÍÊý¾Ý

char * sendData = ”ÄãºÃ£¬TCP¿Í»§¶Ë£¡n“;

send(sClient, sendData, strlen(sendData), 0);

closesocket(sClient);

}

closesocket(slisten);

WSACleanup();

return 0;

}

client:

#include

#include

#pragmacomment(lib,”ws2_32.lib“)

rn”,int main(int argc, char* argv[])

{

WORD sockVersion = MAKEWORD(2,2);

WSADATA data;

if(WSAStartup(sockVersion, &data)!= 0)

{

return 0;

}

SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(sclient == INVALID_SOCKET)

{

printf(“invalid socket!”);

return 0;

}

sockaddr_in serAddr;

serAddr.sin_family = AF_INET;

serAddr.sin_port = htons(8888);

serAddr.sin_addr.S_un.S_addr = inet_addr(“127.0.0.1”);

if(connect(sclient,(sockaddr *)&serAddr, sizeof(serAddr))SOCKET_ERROR)

{

printf(“connect error!”);

closesocket(sclient);

return 0;

}

char * sendData = “ÄãºÃ£¬TCP·þÎñ¶Ë£¬ÎÒÊÇ¿Í»§¶Ë!n”;

send(sclient, sendData, strlen(sendData), 0);

char recData[255];

int ret = recv(sclient, recData, 255, 0);

if(ret > 0)

{

recData[ret] = 0x00;

printf(recData);

}

closesocket(sclient);

WSACleanup();

return 0;

} ==

下载socket多人聊天程序word格式文档
下载socket多人聊天程序.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    经典聊天语录

    精彩说话聊天语录 1.钱不是问题,问题是没钱! 2.喝醉了我谁也不服,我就扶墙! 3.我就像一只趴在玻璃上的苍蝇,前途一片光明,但又找不到出路. 4.大师兄,你知道吗?二师兄的肉现......

    聊天开场白(范文大全)

    聊天开场白在现在社会,很多情况下我们都需要用到开场白,开场白应该达到明确您的意图,使目标愿意和您交流,允许您提出问题的目的。那,怎么才能写好开场白呢?以下是小编帮大家整理的......

    法语聊天常用(范文)

    Bonjour,Je m'appelle sincent, je suis un garcon, j'ai 24 ans et j'habite à 北京. J'apprends le francais depuis 3 mois. J'aimerais correspondre avec des personn......

    经典聊天语句

    经典聊天语句 一、开场白 1. 你的网名很特别,能说说它的含义吗? 2. 看你的头像感觉你是一个很自信的人,应该也是个比较健谈的人吧? 3. 你是(XX)地方的吗?我正打算去那旅游呢。有什......

    聊天经典语录范文

    精彩说话聊天语录 1.钱不是问题,问题是没钱! 2.喝醉了我谁也不服,我就扶墙! 3.我就像一只趴在玻璃上的苍蝇,前途一片光明,但又找不到出路. 4.大师兄,你知道吗?二师兄的肉现......

    中国多人到美国集体购房程序-移民参考

    中国人多人合股在美国购房流程  第一步:相关购房人在中国请律师起草合股购房协议,阐明各自所投金额和所占股份,并以此出具美国官方认可的公证手续(即中英文和译文公证书)  第二步......

    多人小游戏

    1. 开火车:在开始之前,每个人说一个地名,代表自己,但是不能重复,游戏开始后,假设你是北京,另一个人是上海,你就要说:“开呀开呀开火车,北京的火车就要开。”大家一起问:“往哪开?”你说:......

    多人游戏大全

    1. 萝卜蹲游戏 这个游戏就是所有得人都已萝卜命名,区别在于萝卜的颜色不同,有叫白萝卜的有叫红萝卜的可以自己随意的起,但是彼此要记住名字,在玩的时候有第一个人先蹲,蹲的时候还......