1C#SOCKET编程从入门到精通
HXD1C机车总体介绍

Page
28
总体说明
网侧主要电气部件
TSG15B受电弓
BVAC.N99D主断路器和 BTE25.04D高压接地开关
TBY1-25型电压互感器
THG2B型高压隔离开关
高压电缆总成
避雷器
原边电流互感器
Page
29
2.辅助系统
总体说明
辅助电气系统特点
采用冗余设计 变频功能,节能性好 采用标准化、模块化设计 为防寒设计预留接口和余量 配置卫生间、微波炉、冷藏箱等生活设施
Page
17
总体说明
四
设备布置
Page
18
总体说明
设备布置
HXD1C机车采用双司机室、机械间为贯穿中间走廊 结构(宽度≥600mm),机械间设备按照斜对称布置 的原则进行布置。 全车设备布置可分为: 车顶设备布置 司机室设备布置 机械间设备布置 车下设备布置 辅助设备布置等
Page 19
3.控制系统
控制系统——主要部件
总体说明
车辆控制模块VCM
网关模块GWM
事件记录模块ERM
模拟量输入输出模块AXM
数字量输入输出模块DXM
数字量输入模块DIM
Page
47
3.控制系统
控制系统——显示屏
总体说明
Page
33
2.辅助系统
辅助变流器柜特性及主要参数
总体说明
辅助变流器输出U/f特性曲线
额定容量 VVVF输出电压和输出频率
TGF54型辅助变流器
248KVA 80~440V (10~60Hz) 440V(60Hz)
CVCF输出电压和输出频率
Page
34
2.辅助系统
HXD1C机车ACU及TCU通讯故障处理

位”处理。
=21- =21- =21- =22- =22- =22- =23- =23- =24- =24- =43F144 F134 F157 F101 F102 F104 F108 F109 F103 F105 F139
主断 受电弓
过分 相 撒沙
_ MTP M电
源
=28F132 CCBII
_
EPC U电源
=28F133 CCBII
_ LCD M电 源
=32F113
辅助 控制
=31F115
ACU1 电源 辅变1
=31F116
ACU2 电源 辅变2
=34F181
制动 系统 防寒
=51F171
头顶 电源
辅助 压缩 机
VCM 1电源
VCM 2电源
GWM /ERM
GU1/
TCU1 主变1
GU2/
TCU2 主变2
1端司 机室 I/O
2端司 机室 I/O
第十条 ACU通信故障的处理
• 现象:显示屏报ACU1/2 MVB网卡板通信故障, ACU1/2通信故障。显示屏网络拓扑图上ACU1/2 图标为红色/咖啡色。
ACU及TCU通讯故障
货五指导组 洪文赋
第九条 TCU1/2通信故障的处理
• 现象:显示屏报TCU 1/2MVB网卡板通信故障, TCU1/2通信故障。显示屏网络拓扑图上TCU1/2图 标为红色/咖啡色。
正常
第九条 TCU1/2通信故障的处理
• 处理:
• 1.按压“微机复位”按钮,重合主断。
• 2.将相应的TCU1/2进行复位(断合相应的TCU电源自动 开关1次后按压微机复位按钮),若故障未消除则切除 故障的TCU维持运行。(根据列车运行情况,也可直接 切除故障的TCU维持运行,停站后再进行处理。)
电池规格里的1c

电池规格里的1c1C是指电池的放电倍率,也称为C倍率。
C倍率是指电池能够提供额定容量的放电电流。
当电池的C倍率为1C时,电池能够以其额定容量的电流进行放电。
例如,一个1000mAh的电池,在1C放电倍率下,能够提供1000mA的电流进行放电。
电池的放电倍率对于电池的使用具有重要的影响。
一般来说,较高的放电倍率意味着电池能够提供更大的电流,从而可以满足更高功率设备的需求。
而较低的放电倍率则适用于低功率设备。
放电倍率的选择要根据具体的应用需求来决定。
在实际使用中,我们经常会遇到一些电子设备需要较高的放电倍率才能正常工作,而电池的放电倍率又无法满足要求的情况。
这时,我们可以通过并联多个电池来实现较高的放电倍率。
例如,如果一个设备需要2C的放电倍率,而我们手头只有1C的电池,那么我们可以并联两个相同规格的电池来满足需求。
放电倍率还与电池的寿命有关。
一般来说,较高的放电倍率会导致电池的寿命缩短。
这是因为高倍率放电会导致电池内部产生较大的热量,加速了电池的老化过程。
因此,在选择电池时,我们需要权衡放电倍率和电池寿命之间的关系,根据具体的应用需求进行选择。
除了放电倍率,电池还有其他一些重要的规格参数。
例如,电池的容量、电压和内阻等都会对电池的使用产生影响。
容量是指电池能够存储的电量,通常以mAh或Ah为单位。
电压是指电池的电压水平,不同类型的电池具有不同的电压。
内阻是指电池内部的电阻,会影响电池的输出电流和电压稳定性。
在选择电池时,我们需要综合考虑这些参数,根据具体的应用需求来选择合适的电池。
对于一些高功率设备,需要选择较高放电倍率的电池来满足需求。
而对于一些低功率设备,放电倍率可以选择较低的电池。
此外,还需要注意电池的容量是否能够满足设备的使用时间要求,以及电池的电压是否与设备的需求匹配。
电池的放电倍率是电池规格中的重要参数之一。
合理选择电池的放电倍率对于设备的正常工作和电池寿命具有重要意义。
在选择电池时,我们需要综合考虑放电倍率、容量、电压等参数,根据具体的应用需求来进行选择。
HXD1C机车车载安全防护(6A)系统使用说明.

中国铁道科学研究院机车车辆研究所机车车载安全防护 (6A) 系统使用说明V2.1中国铁道科学研究院2013年8月目录第一章机车车载安全防护系统(6A系统)介绍 (5)一总体介绍 (5)二系统构成 (6)第二章音视频显示终端使用说明 (7)1. 系统设置 (15)2. 机车信息 (21)3. 版本信息 (22)第三章数据下载方法 (23)第四章高压绝缘检测箱的使用 (32)一首先确认处于安全操作状态 (32)二开机自检 (32)三绝缘检测 (32)四参数设置 (33)五异常及报警处理 (34)第五章防火监控子系统的使用 (35)一设备故障及处理 (35)二火警处理 (35)第六章走行部故障监测子系统一的使用 (36)一故障预警及处理 (36)二Ⅰ级故障报警及处理 (36)三Ⅱ级故障报警及处理 (37)第七章走行部故障监测子系统二的使用 (37)第八章制动监测子系统的使用 (38)一Ⅰ级报警及处理 (38)二Ⅱ级报警及处理 (38)第九章视频监控子系统的使用 (39)第十章列车供电监测子系统的使用 (39)一Ⅰ级报警及处理 (39)二Ⅱ级报警及处理 (40)三Ⅲ级报警及处理 (40)第一章机车车载安全防护系统(6A系统)介绍一总体介绍机车车载安全防护系统(6A系统)是针对机车运行过程中危及安全的重要事项、重点部件和部位,在前期已有的各分散机车安全设备的基础上,完善功能、综合集成,形成完整的系统性、平台化的安全防护装置,用于提高机车防范安全事故的能力。
系统主要用于空气制动、防火、高压绝缘、列车供电、走行部及视频等部件或对象的监控及记录。
与安全相关的机车信息可分为三类:机车安全信息、机车状态信息和机车监测信息。
机车安全信息来源于LKJ2000和TAX,机车的状态信息来源于TCMS,机车的监测信息来源于6A系统。
LKJ2000与TAX、TCMS、6A系统处于平行地位,它们之间一般通过CMD系统相互连接进行通信。
HXD1C电力机车常见故障及处理方法

湖南铁路科技职业技术学院毕业设计(论文)HXD1C电力机车常见故障及处理方法目录一、HXD1C简述 (1)1总体结构----------------------------------------------------------1 2电气系统----------------------------------------------------------2 3控制系统----------------------------------------------------------2 4转向架-------------------------------------------------------------3 5冷却塔 (3)6牵引变流器 (3)7主变压器----------------------------------------------------------4 8辅助变流器--------------------------------------------------------4二、HXD1C的常见故障及其处理-------------------------------------------41受电弓无法升起或自动降弓故障------------------------------------4 2HXD1C型电力机车主断路器故障 (5)3提牵引主手柄,无牵引力------------------------------------------7 4主变流器故障 (7)5辅助变流器故障 (8)6油泵故障---------------------------------------------------------8 7主变油温高故障---------------------------------------------------8 8牵引风机故障-----------------------------------------------------9 9冷却塔风机故障处理----------------------------------------------9 10空转故障 (9)11110V充电电源(PSU)故障---------------------------------------9 12控制回路接地 (10)13原边过流故障 (10)14各种电气故障不能复位、不能解决的处理-------------------------10 15制动机系统故障产生的惩罚制动---------------------------------10三、其他故障 (10)1控制电源UOv接地故障 (10)2空调接地引起ACU接地故障--------------------------------------11 3主变流器门极驱动板故障-----------------------------------------11 4主流器整流/逆变模块故障---------------------------------------12四、HXD1C日常运用维护保养--------------------------------------------121入库后维护 (12)2运行中维护----------------------------------------------------12 3日常生活维护-------------------------------------------------13致谢 (14)毕业设计(论文)HXD1C电力机车常见故障及处理方法摘要本文介绍了HXD1C型电力机车有关内容的常见故障及其处理方法和日常维护及保养方法,HXD1C型电力机车是交一直一交流电传动的单相工频交流电力机车,机车主电路由主变压器、牵引变流器、牵引电动机三大部分构成。
八年级上册unit 6 I’m going to study computer science. Section A (1a-1c)优秀评课稿

新目标英语八年级上册Unit 6 I’m going to study computer science.Section A 1a--- 1c 评课稿授课教师:评课教师:在此次英语课堂教学达标活动中,马老师所授课的教学内容选自人教新目标Go for it! 八年级上册unit 6 I’m going to study computer science. Section A 第一课时(1a-1c).主要围绕未来“job”这一主题展开各种教学活动,本课时旨在创造一个轻松、愉快的学习、交流环境,通过听、说、读、写来培养学生综合运用语言。
1a中罗列出学生之前学过的以及本单元新学的关于职业的词汇,通过问题What do you want to be when you grow up? How are you going to do that来导入对话,呈现出本单元want to be和be going to的重点句型,并由此引出学生对自己职业理想的打算和思考。
1a—1c通过大量的对话训练和听力练习,以my dream job为话题学习相关的生词和基本句型,并进而引出本单元的重要话题---- 生活目标(life goals)本课时旨在创造一个轻松、愉快的学习、交流环境,通过听、说、读、写来培养学生综合运用语言。
教材Section A 中出现的难点在于学生对未来憧憬多种多样,表达的时候会受到词汇的限制,不利于学生对部分形容词的理解和学习。
基于以上情况,在这堂课的设计中,马老师就提前做好准备,帮助学生能正确应用相关职业的词汇来谈论自己的职业理想,并在知识教学的过程中,将本堂课的情感目标贯彻始终,鼓励学生为实现自己的人生理想而努力。
马老师所授的这一节课,教师的备课重难点突出,层次性强,设计合理。
下面我想谈谈这节课的优点:一、教师素养马老师教学基本功扎实,能够正确使用英语进行教学,语言清晰,表达准确。
教学态度真诚,师生关系融洽。
“和谐”电1C型

HXD1C型电力机车HXD1C型电力机车(“和谐”电1C型),是中国铁路使用的交流电传动干线货运电力机车。
1概要HXD1C型电力机车是干线货运用六轴交流电传动电力机车,由南车株洲电力机车为适应中国铁路运输市场的需要而研制的主型机车,其设计参照了株洲电力机车与德国西门子联合研制制造的HXD1型和HXD1B型电力机车,但使用了更多国产化元件,中国南车株洲电力机车方面称,HXD1C型机车的国产化率90%以上。
包括使用IGBT模块(3,300V / 1,200A)的牵引变流器(IGBT芯片仍需从英飞凌等外国公司购买)、网络控制系统等。
轴式为Co-Co,单轴控制技术,六轴每轴装有一台最大功率1,200 kW 的交流电牵引电动机,总功率7200 kW。
可在线路坡度12‰以下的路段,牵引5000吨至5500吨货物列车。
2009年6月22日,铁道部与南车签署合同,订购400台HXD1C型机车,其中120台会由资阳机车有限公司和资阳南车电力机车有限公司生产,其余280台均由株洲电力机车生产。
首台试制车(HXD1C0001)已于2009年4月30日在株洲厂建造完成,至6月12日正式下线。
首两辆机车于6月26日起开始在北京环铁进行试验。
首批机车配属成都铁路局,首两辆机车已于2009年9月30日交付予重庆机务段[5],当年累计交付重庆机务段60台机车。
2009年11月HXD1C型机车在襄渝铁路测试牵引性能、制动性能和动应力。
广铁株洲机务段于2009年11月18日开始接受HXD1C机车。
南车株洲电力机车与铁道部在2010年7月再度签订590台HXD1C型电力机车的新合同,项目总金额近86亿元,其中170台机车由中国南车资阳机车分包。
由株洲厂生产的HXD1C型机车编号HXD1C-0XXX,资阳厂生产的HXD1C型机车编号HXD1C-6XXX。
2012年12月31日18点整.乌鲁木齐铁路局..配属的HXD1C电力机车全部上线运行,担当乌西—柳园间列车牵引任务.2技术数据编辑UIC轴式Co'Co'轨距1,435 mm受流电压交流 25 kV 50 Hz牵引电动机JD160A × 6最高速度120 km/h牵引功率7,200 kW和谐1型机车应急故障处理1 和谐1型电力机车应急故障处理一、机车一节蓄电池电压低于88V时的临时供电办法:1、条件:用有电节给亏电节供电(操纵有电节)。
HXD1C机车牵引封锁、惩罚制(1)

达到缓解条件后,按压监控装置缓解 键,将自阀手柄置抑制位1秒以上,确 认“惩罚制动、动力切除”红字消 失,回运转位缓解。
VCM1、VCM2同时断开,(同时伴随机车 闭合VCM1、VCM2待装置自检后,将自
7
断主断、降弓),制动显示屏显示动力 切除、惩罚制动,微机显示屏显示“显
阀手柄置抑制位1秒以上,确认“惩罚 制动、动力切除”红字消失,回运转
HXD1C机车惩罚制动提示卡
什么是惩罚制动,为何要实施惩罚制动?
惩罚制动:当机车发生给制动机供电的自动开关跳开、制动系统内部故障、司机错 误操作或精力不集中等情况时保证列车安全的一种制动措施。实施惩罚制动有效的 保证了列车在机车制动系统内部故障时可靠停车、实现了监控装置的机控功能、避 免了由于司机错误操作造成动轮抱闸运行,确保了行车安全。
闭合制动控制单元电源自动开关=28F131,X-IPM模块POWER灯亮,待自检 完成后,CPU灯亮,将自阀手柄置抑制 位1秒以上,确认“动力切除”红字消 失,回运转位缓解。
3
断开制动机辅助电源自动开关=28F132,X-IPM模块制动机内部通讯失败 NETWORK FAIL红灯亮,微机显示屏提示 “制动系统三级故障“,均衡风缸降至 0kpa,列车管降至77kpa。
0kpa,列车管减压至77kpa。
力切除”红字消失,回运转位缓解。
消除第二位机车的惩罚制动源后,将
10
来自重联机车的第二位机车的惩罚制动 要求。
自阀手柄置抑制位1秒以上,确认“惩 罚制动、动力切除”红字消失,回运
转位缓解。
重要提示:惩罚制动故障(惩罚制动请求后,制动缸5秒后没有压力)相关信息在显 示屏显示,要求司机在10秒内进行操作(2秒内连续按2次无人警惕按钮),否则紧 急制动。
HXD1C型电力机车撒砂器介绍及常见故障的分析

HX D 1C 型电力机车撒砂器介绍及常见故障的分析摘要:撒砂器是机车重要组成部分,本文通过对HXD1C型电力机车撒砂系统的工作原理的介绍,结合机车实际运用情况,对机车撒砂系统因砂箱不下砂、撒砂量不足等问题,导致机车黏着系数降低的原因进行了分析,并提出解决方案。
关键词:HXD1C;撒砂系统;撒砂量1.HXD1C型电力机车撒砂器工作原理HXD1C型电力机车多功能撒砂器(简称撒砂器)为通过TQS1装置,用于实现机车在轨道车辆车轮与轨道之间的撒砂,从而增加两者间附着力,改善轨道车辆的启动与制动性能。
撒砂器中设置有加热器,用于解决砂箱内有潮气、砂子易冻结和结块等问题,对砂子加热并达到干燥的目的。
通过对撒砂口供气管路上设置的节流阀的调节,当气源压力设定在指定气压时,可对排砂量在0.5-1.5L/min的范围内进行调节。
其结构如下图1所示:1底板螺钉9导砂盖2通孔双头螺10导砂管栓3滤气网11主基板4小过气嘴12旁通盖5加热板引出线13卡箍6加热板14透气板7底板15旁通导管(二)8旁通导管(一)16大过气嘴图1 撒砂器的结构图2是撒砂系统撒砂示意图。
撒砂器通过P1和P2两个供风口箱撒砂器内供风,风经过加热板6加热(见图)后,透过透气板14(见图),吹动砂箱c里的砂子e。
出砂(见图)通过出砂管T与外界相通,这样,因为气压差,绝大部分风量通过导风盖9(见图),经出砂管T排出。
只要供风的压力在给定的范围内,气流将吹起导风盖内的砂子一起排出出砂管,导砂盖9外层砂子不断补充,从而达到撒砂的目的。
图1中,导砂盖9旁较长的旁通管10也与出砂管T相通,其作用是:排出因撒砂器加热层烘烤砂子过程中积聚在砂箱上部的水气,使砂箱c内的砂子e干燥不板结。
c砂箱7旁通盖d砂箱盖8旁通管e砂子9导砂盖P1干燥供风口10导砂管P2撒砂供风口11(撒砂器)主基板6加T出砂管热板14透气板图2 撒砂器撒砂示意图二、撒砂系统存在的问题及原因分析HXD1C型电力机车大多存在多个砂箱不下砂、撒砂量不足的问题,给现场整备作业带来了巨大困难。
HXD1C型电力机车受电弓控制原理分析

HXD1C型电力机车受电弓控制原理分析摘要:电气化铁路受电弓与接触网之间的匹配关系(简称弓网关系)是系统运行的重要关系之一,同时也是现有列车速度重要限制因素之一。
对整个电气化铁路的正常运作起着重要的作用,由于列车运行速度提升及硬点等原因,列车在运行过程中受电弓与接触网发生离线而产生电弧,造成电力机车中牵引电机等负载的不正常工作。
弓网之间电接触温升过高会影响接触网的机械特性和电气特性,加速接触网劣化,产生安全隐患。
当前电气化铁路由于弓网匹配失当引发的受电弓磨损加剧、接触网烧断、弓网电弧过电压剧烈等问题突出。
亟需建立弓网电接触模型分析弓网电接触过程的温升特性,获得接触网结构设计与列车负荷特性设计之间的关系,确保弓网系统安全可靠性。
关键词:电力机车;电弓控制;原理分析引言在整个电力机车运营系统中,“离线”是制约电力机车提速的关键因素。
受电弓一旦离线,供电问题会直接产生,并伴有电弧火花,从而对沿途的通信线路产生干扰,严重影响电力受流装置的控制系统不能正常运行。
目前,随着电力机车运行速度和铁路运输量的不断提升,研究弓网离线检测技术成了铁路局及下属机务段迫切面对的首要问题之一。
1接触压力对弓网电接触的影响选择合适的接触压力是保持曲线网应力流的主要因素之一,导致曲线网磨损较大,接触压力较小时阻抗阻力较大,电张紧板和管线温度较高,导致曲线网热变形和寿命较短。
研究表明,在低压电动机的电网节能系统中,由于电压波动,电网通常会产生曲线弧,其磨损外观取决于曲线的抗拉强度,并且随着负荷的增加,磨损程度会降低。
接触压力高时,磨损度主要是机械性的,磨损度随载荷增大而增大。
本研究还表明,接触弧网时,存在最佳载荷值,可将滑板系统磨损降至最低。
[4]陈忠和[4]通过数据拟合,开发了电流相对需求系数、磨损率以及电流、速度和压力的预测模型,用于确定电网在电流和转速特定阶段的最优负荷。
这对于在实际设计中使用网面以及延长滑棒寿命至关重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在讲Socket编程前,我们先来看一下几个最常用的类和方法,相信这些东西能让你事半功倍。
一、IP地址操作类1、IPAddress类a、在该类中有一个Parse()方法,可以把点分的十进制IP表示转化成IPAddress类,方法如下:IPAddress address=IPAddress.Parse(“192.168.0.1”);b、IPAddress提供4个只读字段Any用于代表本地系统可用的任何IP地址Broadcase用于代表本地网络的IP广播地址Loopback用于代表系统的回送地址None用于代表系统上没有网络接口其中IPAddress.Any最常用可以用来表示本机上所有的IP地址,这对于socket服务进行侦听时,最方便使用,不用对每个IP进行侦听了。
而IPAddress.Broadcase可用来UDP 的IP广播,这些具体讲socket时再详细介绍。
2、IPEndPoint类我们可以通过二种构造方法来创建IPEndPoint类:a、IPEndPoint(long address,int port)b、IPEndPoint(IPAddress address,int port)四个属性:AddressAddressFamilyPortMaxPortMinPort这些应该从名字上就很好理解,不再一一介绍。
IPEndPoint其实就是一个IP地址和端口的绑定,可以代表一个服务,用来Socket通讯。
二、DNS相关类DNS类有四个静态方法,来获取主机DNS相关信息,1、GetHostName()通过Dns.GetHostName()可以获得本地计算机的主机名2、GetHostByName()根据主机名称,返回一个IPHostEntry对象:IPHostEntry GetHostByName(string hostName)其中IPHostEntry把一个DNS主机名与一个别名和IP地址的数组相关联,包含三个属性:AddressList:一个IPAddress对象的数组Aliases:一个字符串对象数组HostName:一个用于主机名的字符串对象3、GetHostByAddress()类似于GetHostByName(),只不过这里的参数是IP地址,而不是主机名,也返回一个IPHostEntry对象。
IPHostEntry GetHostByAddress(IPAddress address)IPHostEntry GetHostByAddress(string address)4、Resolve()当我们不知道输入的远程主机的地址是哪种格式时(主机名或IP地址),用以上的二种方法来实现,我们可能还要通过判断客户输入的格式,才能正确使用,但Dns类提供一更简单的方法Resolve(),该方法可以接受或者是主机名格式或者是IP地址格式的任何一种地址,并返回IPHostEntry对象。
常用方法就写到这里了,当然针对网络编程不可能只有这么几个类和方法,只不过这几个我们最常用,也非常的简单。
在上一篇中,我列了一些常用的方法,可以说这些方法是一些辅助性的方法,对于分析网络中的主机属性非常有用。
在这篇中,我将会介绍一下面向连接(TCP)socket编程,其中辅以实例,代码可供下载。
对于TCP的Socket编程,主要分二部分:一、服务端Socket侦听:服务端Socket侦听主要分以下几个步骤,按照以下几个步骤我们可以很方便的建立起一个Socket侦听服务,来侦听尝试连接到该服务器的客户Socket,从而建立起连接进行相关通讯。
1、创建IPEndPoint实例,用于Socket侦听时绑定1IPEndPoint ipep=new IPEndPoint(IPAddress.Any,6001);2、创建套接字实例1//创建一个套接字2serverSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,Prot ocolType.Tcp);这里创建的时候用ProtocolType.Tcp,表示建立一个面向连接(TCP)的Socket。
3、将所创建的套接字与IPEndPoint绑定1//将所创建的套接字与IPEndPoint绑定2serverSocket.Bind(ipep);4、设置套接字为收听模式1//设置套接字为收听模式2serverSocket.Listen(10);以上这四步,我们已经建立了Socket的侦听模式,下面我们就来设置怎么样来获取客户Socket连接的实例,以及连接后的信息发送。
5、在套接字上接收接入的连接1while(true)2{3try4{5//在套接字上接收接入的连接6clientSocket=serverSocket.Accept();7clientThread=new Thread(new ThreadStart(ReceiveData));8clientThread.Start();9}10catch(Exception ex)11{12MessageBox.Show("listening Error:"+ex.Message);13}14}通过serverSocket.Accept()来接收客户Socket的连接请求,在这里用循环可以实现该线程实时侦听,而不是只侦听一次。
当程序运行serverSocket.Accept()时,会等待,直到有客户端Socket发起连接请求时,获取该客户Socket,如上面的clientSocket。
在这里我用多线程来实现与多个客户端Socket的连接和通信,一旦接收到一个连接后,就新建一个线程,执行ReceiveData功能来实现信息的发送和接收。
6、在套接字上接收客户端发送的信息和发送信息1private void ReceiveData()2{3bool keepalive=true;4Socket s=clientSocket;5Byte[]buffer=new Byte[1024];67//根据收听到的客户端套接字向客户端发送信息8IPEndPoint clientep=(IPEndPoint)s.RemoteEndPoint;9lstServer.Items.Add("Client:"+clientep.Address+"("+clientep.Port+")");10string welcome="Welcome to my test sever";11byte[]data=new byte[1024];12data=Encoding.ASCII.GetBytes(welcome);13s.Send(data,data.Length,SocketFlags.None);1415while(keepalive)16{17//在套接字上接收客户端发送的信息18int bufLen=0;19try20{21bufLen=s.Available;2223s.Receive(buffer,0,bufLen,SocketFlags.None);24if(bufLen==0)25continue;26}27catch(Exception ex)28{29MessageBox.Show("Receive Error:"+ex.Message);30return;31}32clientep=(IPEndPoint)s.RemoteEndPoint;33string clientcommand=System.Text.Encoding.ASCII.GetString(buffer).Substri ng(0,bufLen);3435lstServer.Items.Add(clientcommand+"("+clientep.Address+":"+clientep.Port+") ");3637}3839}通过IPEndPoint clientep=(IPEndPoint)s.RemoteEndPoint;我们可以获取连接上的远程主机的端口和IP地址,如果想查询该主机的其它属性如主机名等,可用于上一篇讲的Dns.GetHostByAddress(string ipAddress)来返回一个IPHostEntry对象,就可以得到。
另外我们要注意的是,通过Socket发送信息,必须要先把发送的信息转化成二进字进行传输,收到信息后也要把收到的二进字信息转化成字符形式,这里可以通过Encoding.ASCII.GetBytes(welcome);和Encoding.ASCII.GetString(buffer).Substring(0, bufLen);来实现。
以上就是服务端Socket侦听模式的实现,只要有远程客户端Socket连接上后,就可以轻松的发送信息和接收信息了。
下面我们来看看客户端Socket是怎么连接上服务器的。
二、客户端连接客户端Socket连接相对来说比较简单了,另外说明一下,在执行客户端连接前,服务端Socket侦听必须先启动,不然会提示服务器拒绝连接的信息。
1、创建IPEndPoint实例和套接字1//创建一个套接字2IPEndPoint ipep=new IPEndPoint(IPAddress.Parse("127.0.0.1"),6001);3clientSocket=new Socket(AddressFamily.InterNetwork,SocketType.Stream,Prot ocolType.Tcp);这个跟服务端Socket侦听差不多,下面一步由服务端Socket的侦听模式变成连接模式。
2、将套接字连接到远程服务器1//将套接字与远程服务器地址相连2try3{4clientSocket.Connect(ipep);5}6catch(SocketException ex)7{8MessageBox.Show("connect error:"+ex.Message);9return;10}前面已说明,如果在执行Socket连接时,服务器的Socket侦听没有开启的话,会产生一个SocketException异常,如果没有异常发生,那恭喜你,你已经与服务器连接上了,接下来就可以跟服务器通信了。
3、接收信息1while(true)2{3//接收服务器信息4int bufLen=0;5try6{7bufLen=clientSocket.Available;89clientSocket.Receive(data,0,bufLen,SocketFlags.None);10if(bufLen==0)11{12continue;13}14}15catch(Exception ex)16{17MessageBox.Show("Receive Error:"+ex.Message);18return;19}2021string clientcommand=System.Text.Encoding.ASCII.GetString(data).Substring (0,bufLen);2223lstClient.Items.Add(clientcommand);2425}4、发送信息1//向服务器发送信息23byte[]data=new byte[1024];4data=Encoding.ASCII.GetBytes(txtClient.Text);5clientSocket.Send(data,data.Length,SocketFlags.None);客户端的发送信息和接收信息跟服务器的接收发送是一样的,只不过一个是侦听模式而另一个是连接模式。