局域网点对点通信软件设计与实现
基于TcpIP协议的网络通讯设计(服务器)

1JISHOU UNIVERSITY专业课课程论文题 目:基于 TCP/IP 协议的网络通讯设计 作 者:学 号: 所属学院:信息科学与工程学院 专业年级: 总 评 分: 完成时间:吉首大学信息科学与工程学院基于Tcp/IP协议的网络通讯设计(吉首大学信息科学与工程学院,湖南吉首 41600)摘要本论文设计的目的是基于TCP/IP点对点通讯技术,以VB为平台设计并实现了一个基于C/S(客户端/服务器)模式的五子棋网络游戏的总体设计方法。
本设计主要是建构服务器端,采用TCP/IP 网络协议,使用VB提供的Winsock控件来实现与客户端的网络通信功能。
主要功能是使客户端能连接到服务器端,双方可以通过网络对战,并且能够自动判断胜负。
特点是支持双方网上聊天功能,还增添了悔棋、复盘、保存棋局/聊天记录等功能。
关键词:Winsock;VB;C/S工作模式;五子棋;TCP/IP2Realization of network communicationdesign based on Tcp/IP protocol (Server)AbstractThe thesis is aimed to achieve a C/S (Client/Server) mode backgammon online game based on the point to point communication technology by TCP/IP, with the Microsoft Visual Basic software platform. This design main to build a server-side that applied the TCP/IP protocol as the network protocol and used the tool of Visual Basic, Winsock, to realize the network communication. The functions of the design contain Client and Server side can be connected to each other and plays the backgammon games online, then it can auto judge the victory or defeat. The design’s feature is to support chats online, undo, and replay, save games and chat records.Keywords: Winsock; Microsoft Visual Basic; Client/Server mode; backgammon game; TCP/IP3目录第一章绪论 (1)1.1 五子棋的简介 (1)第二章开发工具的选择 (2)2.1 开发背景与现状 (2)第三章网络通讯的基本原理 (3)3.1 Tcp/IP 体系结构 (3)3.1.1 Tcp/IP简介 (3)3.1.2 Tcp/IP特点 (3)3.1.3 Tcp/IP协议的应用 (4)3.2 Winsock (5)3.3需求分析与总体设计 (7)3.3.1 需求分析 (7)3.3.1.1 五子棋功能需求 (7)3.3.1.2 五子棋的规则 (7)3.3.2 总体分析 (7)3.4 五子棋游戏设计 (9)3.4.1 设计原理 (9)3.4.2通讯流程 (9)3.4.3 算法描述 (11)3.4.3.1 棋盘绘制算法 (11)3.4.3.2 判断输赢算法 (12)3.4.3.3 下棋决策算法 (14)3.4.3.4 聊天记录管理算法 (15)3.4.3.5 下棋记录管理算法 (18)第四章软件测试 (20)4.1 登陆界面设计 (20)4.2 下棋界面设计 (21)第五章软件测试 (22)5.1 问题的发现 (22)5.2 问题的解决 (22)第六章总结与体会 (23)6.1 总结 (23)6.2 体会 (23)参考文献 (25)4第一章绪论1.1 五子棋的简介众所周知,五子棋是我国古代的、传统的黑白棋种之一,大约在南北朝时期随围棋一起先后传入朝鲜、日本等地。
国家开放大学计算机网络形考1-3答案

在单工通信方式中,信号只能向一个方向传输。例如:无线广播电台的广播。
对
通信线路的连接可以有多种形式,对于计算机局域网络,主要有点到点和广播两种连接方式。
错
在信道中数据的传输方式有串行通信和并行通信两种。通常,并行通信用于较远距离的数据传输,而串行通信则用于较近距离的数据传输。
错
光纤是迄今传输速率最快的传输介质,可以以每秒10GB的速度可靠的传递数据。
C. TCP
( )协议规定网际层数据分组的格式。
D. IP
一个功能完备的计算机网络需要指定一套复杂的协议集。对于复杂的计算机网络协议来说,最好的组织方式是( )。
A. 层次结构模型
在ISO/OSI参考模型中,网络层的主要功能是( )。
A. 路由选择、拥塞控制与网络互连
用于将MAC地址转换成IP地址的协议一般为( )。
在TCP/IP参考模型中TCP协议工作在:()
正确答案是:传输层
下列哪个地址是电子邮件地址( )。
正确答案是:CSSC@
TCP提供面向()的传输服务。
正确答案是:连接
动态主机配置协议DHCP,它工作在OSI的( ),是一种帮助计算机从指定的DHCP服务器获取它们的配置信息的协议。
正确答案是:应用层
C. 数据链路层
( )是OSI 参考模型中最靠近用户的一层,负责为用户的应用程序提供网络服务。
A. 应用层
( )协议,它源于ARPANET网,现在已经成为Internet互联网的通信协议。
B. TCP/IP
TCP/IP 协议简化了层次设备,由下而上分别为网络接口层、网络层、( )、应用层。
A. 传输层
对
通信子网可分为点—点通信线路通信子网与广播信道通信子网两类。
P2P通信原理与实现(C++),NAT,网络穿透原理

P2P通信原理与实现(C++),NAT,网络穿透原理1.简介当今互联网到处存在着一些中间件(MIddleBoxes),如NAT和防火墙,导致两个(不在同一内网)中的客户端无法直接通信。
这些问题即便是到了IPV6时代也会存在,因为即使不需要NAT,但还有其他中间件如防火墙阻挡了链接的建立。
当今部署的中间件大多都是在C/S架构上设计的,其中相对隐匿的客户机主动向周知的服务端(拥有静态IP地址和DNS名称)发起链接请求。
大多数中间件实现了一种非对称的通讯模型,即内网中的主机可以初始化对外的链接,而外网的主机却不能初始化对内网的链接,除非经过中间件管理员特殊配置。
在中间件为常见的NAPT的情况下(也是本文主要讨论的),内网中的客户端没有单独的公网IP 地址,而是通过NAPT转换,和其他同一内网用户共享一个公网IP。
这种内网主机隐藏在中间件后的不可访问性对于一些客户端软件如浏览器来说并不是一个问题,因为其只需要初始化对外的链接,从某方面来看反而还对隐私保护有好处。
然而在P2P应用中,内网主机(客户端)需要对另外的终端(Peer)直接建立链接,但是发起者和响应者可能在不同的中间件后面,两者都没有公网IP地址。
而外部对NAT公网IP和端口主动的链接或数据都会因内网未请求被丢弃掉。
本文讨论的就是如何跨越NAT实现内网主机直接通讯的问题。
详解,网络穿透,P2P,打洞的核心原理视频讲解:「链接」P2P丨网络穿透与NAT原理分析:「链接」2.术语防火墙(Firewall):防火墙主要限制内网和公网的通讯,通常丢弃未经许可的数据包。
防火墙会检测(但是不修改)试图进入内网数据包的IP地址和TCP/UDP端口信息。
网络地址转换器(NAT):NAT不止检查进入数据包的头部,而且对其进行修改,从而实现同一内网中不同主机共用更少的公网IP(通常是一个)。
基本NAT(Basic NAT):基本NAT会将内网主机的IP地址映射为一个公网IP,不改变其TCP/UDP端口号。
基于TCPIP的局域网聊天室的设计与实现详解

基于TCP/IP的局域网聊天室的设计与实现摘要随着计算机网络技术的发展,各种各样基于网络的应用也随之诞生,比如基于互联网的信息发布,通信,数据共享等等。
局域网的发展也同样迅速。
很多政府机构,企业,学校,都是先以一个统一的局域网联结在一起,再分别接入INTERNET.因此基于局域网的即时通信工具,就这样应运而生了。
所以本文提出了一个更加合理的设计,并在WINDOWS平台上加以了实现.在本实现内将客户端和服务端综合在一个程序之内,用多线程实现不同的并行任务。
并进行了人性化的界面设计,使用起来更加简单方便,并且功能十分合理,又易于扩展以及个性化定制。
本文通过局域网聊天系统来具体共享内存实现进程间的数据交换,利用windows消息机制实现进程间的同步,两种机制结合使用。
局域网聊天室作为一种新型的聊天工具可以提供更为及时、可靠、突破了必须有外界网络接入等优点,具有极其广泛的发展前景。
本文介绍了采用JAVA编程开发局域网聊天系统的一套比较常用的解决方案。
采用TCP模式进行文字聊天, 在客户端之间点对点(C/C)的进行。
本系统采用典型的C/S(客户端/服务器)的框架模式,在该方案中采用Socket (套接字)原理实现网络通信,最终实现了通过服务器中转的文字聊天、文件传输功能,从而大大降低了程序的开发难度。
本系统主要包括登陆、聊天、好友列表和服务器管理几个部分。
本系统从需求分析、系统的设计、功能的实现都严格遵循了软件工程设计的思想。
【关键词】Socket;TCP/IP;C/S;局域网聊天室AbstractWith the development of computer network technology, a variety of Web-based applications also will be the birth, such as Internet-based information release, communications, data sharing, and so on. LAN development is quickly. Many government agencies, businesses, schools, are first linked together in a unified LAN, respectively connected to the INTERNET, LAN-based instant messaging tool, and thus came into being. In this paper, a more rational design, in WINDOWS platform to achieve integrated in this realization of the client and server in different parallel tasks within a program, multi-threaded. And the design of user-friendly interface, easy to use and very reasonable, and easy expansion and customization. LAN chat system to a specific shared memory data exchange between process and use the windows message mechanism to achieve inter-process synchronization, the two mechanisms used in conjunctionLAN chat room as a new chat tool that can provide the advantages of more timely, reliable, broke the need of outside network access, has a very wide range of development prospects.This article describes a JA V A Programming LAN chat system, a more common solution. TCP mode, text chat, peer-to-peer (C / C) between the client. The system uses the framework of a typical C / S (Client / Server) mode, the program using the Socket (socket) the principle of network communication, and ultimately the transit through the server, text chat, file transfer capabilities, which greatly reduces the difficulty of program development.The system includes landing, chat, friend lists, and server management of several parts. The system needs analysis, system design, the realization of functions strictly follow the idea of software engineering.【Key words】Socket;TCP/IP;C/S;Local Area Network Chat Room目录第1章引言 (1)1.1课题背景 (1)1.2国内外研究现状 (2)1.3主要内容 (3)第2章局域网聊天室系统分析 (4)2.1系统需求分析 (4)2.1.1功能需求 (4)2.1.2系统基本流程图 (4)2.1.3性能要求 (5)2.1.4测试环境规定 (5)2.2可行性研究 (5)2.2.1成本可行性分析 (5)2.2.2技术可行性分析 (5)2.3系统开发环境的分析 (6)2.4数据流图 (6)2.4.1顶层数据流图 (6)2.4.2一层数据流图 (6)第3章系统设计 (7)3.1设计目标 (7)3.2构建开发环境 (7)3.3系统模块流程图 (7)3.4系统功能模块图 (9)第4章基于Eclipse的聊天室的分析与设计 (10)4.1 TCP套接字的运用 (10)4.2 TCP三次握手协议 (11)4.3程序结构 (11)4.3.1多用户在线方案 (11)4.3.2软件框架 (12)4.4代码实现 (12)4.4.1用户登陆模块 (12)4.4.2用户列表模块 (13)4.4.3文本聊天模块 (15)4.4.4文件传输模块 (17)第5章局域网聊天室系统测试 (20)5.1系统测试结果与分析 (20)5.1.1用户登陆以及用户列表 (20)5.1.2文本聊天 (21)5.1.3文件传输功能 (24)5.2本章小结 (25)结束语 (26)参考文献......................................................... .27致谢. (29)第1章引言1.1课题背景近年来,随着全球信息化进程的不断发展,网络的发展也非常迅速。
局域网聊天软件

通信软件设计三级项目任务书一、题目:局域网聊天软件分析二、班级:三、小组成员:四、起止时间:第六学期第十六周2012-6-4~2012-6-9五、设计要求与思路:通过Ethereal抓包,认真分析飞秋的工作原理、实现方法和工作协议等,并仿照飞秋、设计实现一个简单的局域网聊天软件,尽量能够做到与飞秋兼容。
设计思路:先使用飞秋,熟悉飞秋的功能;深入分析每一部分的功能实现;通过防火墙观察飞秋使用的套接字情况,并抓包分析飞秋在使用过程中的网络数据传输,分析飞秋的应用协议,分析设计实现简单的聊天软件,实现好友列表维护和文本消息传送等功能。
六、主要任务:1、深入理解TCP和UDP的工作原理和服务的特性,掌握套接字编程机制和方法;2、理解C/S架构和P2P两种应用模式;3、深入分析飞秋的功能、工作原理、应用协议等;4、完成局域网聊天软件的分析、开发与调试;5、在设计报告中对飞秋进行全面和深入的剖析;6、按照格式要求撰写设计报告。
学生(签字):指导教师(签字):系主任(签字):院长(签字):1、设计要求与任务通过Ethereal抓包,认真分析飞秋的工作原理、实现方法和工作协议等,并仿照飞秋、设计实现一个简单的局域网聊天软件,尽量能够做到与飞秋兼容。
先使用飞秋,熟悉飞秋的功能;深入分析每一部分的功能实现;通过防火墙观察飞秋使用的套接字情况,并抓包分析飞秋在使用过程中的网络数据传输,分析飞秋的应用协议,分析设计实现简单的聊天软件,实现好友列表维护和文本消息传送等功能。
主要任务:深入理解TCP和UDP的工作原理和服务的特性,掌握套接字编程机制和方法;理解C/S架构和P2P两种应用模式;深入分析飞秋的功能、工作原理、应用协议等;完成局域网聊天软件的分析、开发与调试;在设计报告中对飞秋进行全面和深入的剖析。
2、设计正文2.1、飞秋分析飞秋是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能,是飞鸽的完善代替者,另外,飞秋支持语音,远程协助群聊天(不需要服务器),它参考了飞鸽传书(FreeEIM)和QQ, 完全兼容飞鸽传书协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。
c#实现p2p点对点的信息传输

this.textbox2 = new system.windows.forms.textbox ( ) ;
bel1 = new bel ( ) ;
}
}
catch ( system.security.securityexception )
{
messagebox.show ( "防火墙安全错误!","错误",
messageboxbuttons.ok , messageboxicon.exclamation);
}
2.利用networkstream来传送信息:
try
{
tcpclient tcpc = new tcpclient ("10.138.198.213",8888);
//对ip地址为"10.138.198.213"的计算机的8888端口提出连接申请
networkstream tcpstream = tcpc.getstream ( );
在下面介绍的用visual c#实现的局域网点对点通讯程序,就有如下特点,在网络利用此通讯程序进行通讯的任一计算机,在通讯之前,都需要侦听端 口号,接受其他机器的连接申请,并在连接建立后,就可以接收对方发送来的数据;同时也可以向其他机器提出连接申请,并在对方计算机允许建立连接请求后,发 送数据到对方。可见在网络中利用此软件进行p2p网络通讯的任一计算机既是客户机,同样也是服务器。
//以特定的编码往向数据流中写入数据 ,默认为utf8编码
reqstreamw.write (smsg);
局域网点对点通信软件设计与实现
《网络编程技术》课程设计报告课程设计题目:局域网点对点通信软件与实现整理所在系部:计算机科学与工程系整理所在专业:网络工程整理所在班级:作者姓名:作者学号:指导教师姓名:完成时间: 2013年07月10日课程设计任务书摘要所谓网络中的点对点通信是实现网络上不同计算机之间,不经过任何中继设备而直接交换数据或服务的一种技术。
由于允许网络中任何一台计算机可以直接连到网络中的其他计算机,并与之进行数据交换,这样既可以消除中间环节,也使得网络上的沟通变的更加容易、更加直接。
本文介绍的是一种是用Winsock编程技术,基于TCP/IP协议的、面向连接的流式套接字网络通信编程设计。
局域网即时通讯软件使用TCP协议作为传输层的协议,采用点对点模式服务,不需要服务器支持,使局域网用户的使用更加方便和高效。
它可以实现局域网用户的自动检测,用户间文本信息的交流,文件的传输等功能。
本系统使用Visual Studio 2010作为开发工具,将.NET中的一些技术运用到系统中关键词:点对点;TCP/IP;Socket;UDP;P2P目录摘要 (2)目录 (3)第1章绪论 (4)1.1课题研究现状分析 (4)1.2选题的目的及意义 (4)第2章系统需求分析 (5)2.1 问题的提出 (5)2.2 系统的设计目标 (5)第3章系统总体设计 (6)3.1系统功能设计 (6)3.2功能模块的说明 (8)3.2.1初始化(广播用户信息) (8)3.2.2用户列表管理 (8)3.2.3文本信息传输 (8)3.2.4文件传输 (8)3.2.5发送心跳包 (8)第4章系统实现 (9)4.1初始化模块的设计和实现 (9)4.1.1监听端口 (9)4.2 广播消息 (9)4.3 文本消息的发送和接收 (10)4.4 文件的发送和接收 (13)4.5发送心跳包 (15)第5章课程设计总结 (17)5.1 主要问题及解决办法 (17)5.2 课程设计体会 (17)5.3 自我评定 (17)参考文献 (18)第1章绪论1.1课题研究现状分析随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流要求,在互联网或局域网上即时的和好友取得了解,已经成为当今社会人们主流的了解方式。
基于P2P技术的局域网即时通讯软件教学设计应用
t褥,一络。
一麓嚣基于P2P技术的局域网即时通讯软件教学设计应用◆方挺【摘要】计算机对等网络(PEP)技术是目前网络技术的研究热点。
本文根据教学需要设计一套即时通讯软件,原理简单,成本低,易于实现。
我们从P2P技术的基本概念、应用范围和技术特点进行分析,并介绍了网络模型设计和系统结构模型设计。
从而方便大家了解其P2P技术,实现其教学功能,并很好地向实际推广应用。
【关键词】P2P局域网TC P/I P U D P即时通讯一、P2P技术1.P2P技术介绍P2P是英文pe er—t o—pee r的缩写,pe er在英语里有。
(地位、能力等)同等者”、。
同事”和。
伙伴”等意义,因此.P2P可以理解为对等网、点对点等。
现在,P2P软件技术在互联网上得到广泛应用。
除了网上即时通讯软件之外,P2P在共享音乐和软件下载等方面的应用也很多,如P P Li ve网络电视软件、多媒体影音分享工具PO CO软件、BT下载、迅雷下载、eM ul e----电驴等软件均属于P2P软件。
在互联网应用中,P2P是一种技术,同时也是一种思想。
它是一种充分发挥整个互联网基础潜能的思想。
P2P使得互联网络上的沟通变得容易、更直接共享和交互,真正地消除中间环节。
使人们可以直接连接到其他用户的计算机进行文件交换,而不是像过去那样必须连接到服务器去浏览与下载。
P2P技术的局域网即时通讯软件的设计应用主要是实现同在一个局域网内的每个用户之间进行即时通讯。
即聊天、文件传输等功能。
它是一个建立在纯P2P模型下的即时通讯软件。
所以完全不需要服务器支持就可以进行点对点通讯,使用起来非常方便。
它采用了U D P网络的传输协议进行底层的消息传送,在此基础上用广播消息实现上下线提示。
该软件同时采用TC P网络的传输协议进行文件传输和建立可靠的文字聊天。
2.P2P技术产生的背景P2P不是一个新概念,在互联网产生初期,一个本质的特征就是P2P,只不过由于带宽及处理能力等的限制.使得我们的沟通中出现了很多的中间环节,如中间服务器、门户网站、第三方信息(交易)平台等。
局域网聊天程序(类飞鸽)综合设计
基于Socks局域网内即时通讯软件(类飞鸽)摘要网络通讯在当今已经不算新鲜事物,但大多数网络通讯都需要借助Internet 上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题,如浪费网络资源、遭遇到网络攻击、传播的病毒、破坏防御系统等等。
由于互连网上的网络通讯工具给企业内部信息交流带来了不便,所以为了方便内部网络的用户之间的沟通,需要开发一个基于局域网的信息收发系统的即时通讯工具,实现在内部网络中进行信息的交流。
本课题设计主要针对局域网通讯而开发设计的,采用的是C/S 构架,类似飞鸽传书系统,来实现聊天、文件传输功能,并借助一些网络通讯组件,成功的实现了在局域网上的即时通讯。
本论文的目标是设计一个类似飞鸽传输的局域网通信软件,并分析它在其领域的优势。
本设计以 C 编写,能在windows xp 等环境下运行。
设计共分为几大模块,分别是:首先,介绍选题设计内容和目标;其次,介绍需求分析和设计思想(TCP/IP 点对点协议技术,C/S 架构和SOCKET 网络编程技术);然后,设计的具体实现;最后,对工作计划统计以及分析系统进行测试并得到测试结果和附录。
关键词:聊天;文件传输;socket;类飞鸽传书;C/S 结构一、设计内容1.1 课题背景当时间走向21 世纪,当今时代也由工业经济渐渐成为了知识经济、信息经济的时代。
信息的需求量的不停增加,促使了计算机通信的日新月异!虽然网络的使用频率与使用的范围都越来越广泛,但是人们使用的网络的用途主要的还是只有两个:(1).相互之间的沟通,(2).资源共享。
局域网作为网络的一个重要组成部分,它不但用户与外界连接的枢纽,同时也是近距离用户之间沟通与资源共享的一个重要途径。
在这种情况下,如何使局域网内的用户便捷的勾通,以及快速的资源共享,也就成为了人们对网络研究的重点之一。
本系统仿飞鸽传输,是一个局域网内的通迅工具,主要通过Winsockt 完成。
它据有的功能有:(1)局域网内用户间简单的文字聊天功能;(2)局域网内用户间相互的文件、文件夹传输。
计算机网络设计填空题
一、填空题(本题总分20分,每小题2分)1)城域网信号传输距离比局域网长,信号更加容易受到环境的()。
2)可以将“信息系统”分解为()系统、硬件系统和软件系统三大部分。
3)系统集成涉及到用户、系统集成商、第三方人员、社会评价部门,它们之间既有共同的(),也有不同的期望。
4)在网络工程设计阶段,风险存在于不必要的带入过多的()。
5)按照网络信号传输方式,可以将网络分为()网络和点对多点网络两种类型。
6)网络冗余设计的目的有两个,一是为了提供网络备用;二是为了()。
7)()是基于增加带宽的需要,可以将几条链路捆绑在一起,以增加链路带宽。
8)MPLS技术的设计思想是()、核心交换。
9)IDS产品在网络中采用旁路式连接,而IPS产品在网络中采用()式连接。
10)符合()标准的光纤在我国占90%以上的市场。
1)干扰2)网络3)目标4)设计约束5)点对点6)负载均衡7)汇聚8)边缘路由9)串接10)G.652二、填空题(本题总分20分,每小题2分)1)城域网信号传输距离比局域网长,信号更加容易受到环境的()。
2)城域网往往采用()、环型、树形和环形相结合的混合结构。
3)系统集成涉及到用户、系统集成商、第三方人员、社会评价部门,它们之间既有共同的目标,也有不同的()。
4)硬件设备系统集成的工作在于解决不同产品之间的()兼容性问题。
5)网格的根本特点是()和消除资源孤岛。
6)()文档定义了网络工程项目的需求基线。
7)电信企业对网络设备要求支持多种业务,以及较强的()能力。
8)网络安全的目标是使用户的网络财产和()损失最小化。
9)广播网络中有三种信号传输方式:单播、多播和()。
10)在星型网络拓扑结构中,N个节点完全互联需要()条传输线路。
1)干扰2)点对点3)期望4)接口5)资源共享6)需求分析7)QoS 8)资源9)组播10)N-1填空题(本题总分20分,每小题2分)1)可以将“信息系统”分解为()系统、硬件系统和软件系统三大部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《网络编程技术》课程设计报告课程设计题目:局域网点对点通信软件与实现作者所在系部:计算机科学与工程系作者所在专业:网络工程作者所在班级:作者姓名:作者学号:指导教师姓名:完成时间: 2013年07月10日课程设计任务书摘要所谓网络中的点对点通信是实现网络上不同计算机之间,不经过任何中继设备而直接交换数据或服务的一种技术。
由于允许网络中任何一台计算机可以直接连到网络中的其他计算机,并与之进行数据交换,这样既可以消除中间环节,也使得网络上的沟通变的更加容易、更加直接。
本文介绍的是一种是用Winsock编程技术,基于TCP/IP协议的、面向连接的流式套接字网络通信编程设计。
局域网即时通讯软件使用TCP协议作为传输层的协议,采用点对点模式服务,不需要服务器支持,使局域网用户的使用更加方便和高效。
它可以实现局域网用户的自动检测,用户间文本信息的交流,文件的传输等功能。
本系统使用Visual Studio 2010作为开发工具,将.NET中的一些技术运用到系统中关键词:点对点;TCP/IP;Socket;UDP;P2P目录摘要 (2)目录 (3)第1章绪论 (4)1.1课题研究现状分析 (4)1.2选题的目的及意义 (4)第2章系统需求分析 (5)2.1 问题的提出 (5)2.2 系统的设计目标 (5)第3章系统总体设计 (6)3.1系统功能设计 (6)3.2功能模块的说明 (7)3.2.1初始化(广播用户信息) (7)3.2.2用户列表管理 (7)3.2.3文本信息传输 (7)3.2.4文件传输 (7)3.2.5发送心跳包 (7)第4章系统实现 (8)4.1初始化模块的设计和实现 (8)4.1.1监听端口 (8)4.2 广播消息 (8)4.3 文本消息的发送和接收 (9)4.4 文件的发送和接收 (12)4.5发送心跳包 (14)第5章课程设计总结 (16)5.1 主要问题及解决办法 (16)5.2 课程设计体会 (16)5.3 自我评定 (16)参考文献 (17)第1章绪论1.1课题研究现状分析随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流要求,在互联网或局域网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。
因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。
作为整个计算机网络的基础,局域网用户之间进行即时通许的需求更大,而且他们之间进行文件传输与共享的频率更高,因此有必要设计一款专门为局域网用户使用的即时通讯软件。
当前存在的即时通讯软件很多,但其中很多一部分由于嵌入了太多的娱乐功能而不很实用。
对于局域网用户来说,首先,由于他们之间进行通讯的不确定性和随机性,所以如果专门为他们建立一个服务器端的话,势必会造成很大的浪费,因此,本软件选择实用点对点服务模式,不需要服务器支持。
其次,局域网用户之间进行交流的主要方式及时文字信息交流,因此,本软件实现的最基本的功能就是文字信息的传输。
再次,局域网用户要频繁的进行文件的传输,所以本软件还实现了两个用户之间文件的传输。
1.2选题的目的及意义随着计算机和Internet的飞速发张,网上聊天已成为人们相互交流的一中方式,与E-mail,电话相比,聊天服务更具有实时性和有效性。
网络版的聊天软件种类繁多,如QQ,MSN等,实时随时随地上网聊天,给人们带来了很大的方便。
但是这些聊天软件业存在以下不足:用户必须连接Internet;用户工作时容易沉迷于网络聊天。
为了方便单位企业内部的信息交流,避免企业内部员工使用类似QQ等软件泄露内部消息,减少不必要的财力和人力资源浪费,开发一耳光局域网聊天软件是非常必要的。
第2章系统需求分析2.1 问题的提出为了满足人们在局域网内部进行安全、有效、快速的沟通以及文件的传输的目的。
2.2 系统的设计目标(1)本软件采用单纯P2P方式,各个客户端之间可以直接发送消息和传输文件;(2)根据选中的用户,实现一对一或一对多通信。
(3)软件中包括在线的用户信息列表、通信信息列表(聊天及文件传输)等。
(4)实现用户的动态加入和退出。
(5)在线列表中记录登陆的主机名称及IP地址信息。
(6)客户端定期发送心跳包,表示本客户端的存在。
第3章系统总体设计3.1系统功能设计本软件可以实现局域网内用户的自动检测,用户之间的文件信息交流,文件传输等功能。
据此,本设计的功能模块可以分为5个:广播用户信息,用户列表管理,文字信息传输,文件传输,发送心跳包。
系统的总功能模块图如图3-1所示:初始化:广播用户信息获取用户列表:用户列表管理文本信息传输文件传输发送心跳包图3-1 系统功能模块图用户主界面如图3-2所示:图3-2用户界面图3.2功能模块的说明3.2.1初始化(广播用户信息)该模块的主要功能是搜集本机用户的相关信息,如计算机名,IP地址,初始化Socket,开始监听端口,并把本机用户的信息通过广播消息发送出去。
3.2.2用户列表管理该模块的主要功能是对收到的用户信息进行管理,包括用户列表的更新,用户信息查找,同时还要对其他用户的广播消息进行反馈。
3.2.3文本信息传输该模块的主要功能是把当前文本框的内容发送给当前选中的用户,分为私聊和群聊,如果发送成功,则把当前文本框的内容加上某些必须的信息在聊天记录文本框中显示,同时清空输入文本框。
该模块还要具有纠正用户为空(为选中用户)或者发送内容为空的情况。
3.2.4文件传输该模块的主要功能是实现两个用户之间的点对点的文件传输。
使用TCP协议进行传输,能确保文件发送过程中不出现丢失现象。
3.2.5发送心跳包该模块的主要功能是检测用户是否在线。
第4章 系统实现4.1初始化模块的设计和实现使用Socket 编程都是使用的是一些绑定端口和IP 的普通的程序,而UDP 数据报则支持向局域网内的所有用户发送组播消息,即向ip224.100.0.1发送消息,局域网内所有监听相同端口的UDPClient 都会收到该消息。
4.1.1监听端口本程序中用到了大量的Socket Udp 发送和接收数据的操作,所以把这些相关操作定义为一个组件,这样就简化了程序中其他部分的代码;private UdpClient udpClient; private int port = 8002;private void Form1_Load_1(object sender, EventArgs e) {Thread myThread = new Thread(ReceiveMessage); myThread.Start(); }private void ReceiveMessage() {udpClient = new UdpClient(port); }4.2 广播消息发送广播消息主要代码:private void Form1_Load(object sender, EventArgs e){name = Dns .GetHostName();Cursor .Current = Cursors .WaitCursor;Thread myThread = new Thread(ReceiveMessage);myThread.Start();Thread.Sleep(1000);SendMessage(broderCastIP, "login," + name);IPAddress[] ips = Dns.GetHostAddresses(name);IPAddress ip = ips[1];txtIP.Text = ip.ToString();txtHostName.Text = name;txtIP.ReadOnly = true;txtHostName.ReadOnly = true;Thread t = new Thread(lis);t.Start();t.IsBackground = true;}4.3 文本消息的发送和接收文本消息的发送与接收是本系统用户使用的最基本的功能模块。
文本消息的发送涉及到的内容有获取当前选中用户的ip地址以及其他信息,获取当前文本框中的内容并对其中的内容作简单的判断(是否为空,禁止发送空消息),将当前文本框中的内容复制到聊天记录文本框并清空当前文本框的内容等。
发送的核心代码:private void button1_Click(object sender, EventArgs e){if (rtbSend.Text.Trim().Length > 0){if (rdoPrivate.Checked){if (lvwUser.SelectedItems.Count == 0){MessageBox.Show("请选择一个用户");}else{string ip = lvwUser.SelectedItems[0].SubItems[2].Text.ToString();string sendName = lvwUser.SelectedItems[0].SubItems[1].Text.ToString();SendMessage(IPAddress.Parse(ip), "message," + name + "," + rtbSend.Text); rtbReceive.Text += "[" + sendName + "]发送(私聊):" + rtbSend.Text + "\r\n"; rtbSend.Text = "";}}else{SendMessage(broderCastIP, "messageToall," + name + "," + rtbSend.Text); rtbSend.Text = "";}}else{MessageBox.Show("发送内容不能为空!");}}private void SendMessage(IPAddress ip, string str) {UdpClient myClient = new UdpClient();IPEndPoint iep = new IPEndPoint(ip, port);byte[] bytes = System.Text.Encoding.UTF8.GetBytes(str);try{myClient.Send(bytes, bytes.Length, iep);}catch (Exception ex){MessageBox.Show(ex.Message, " 失败");}finally{myClient.Close();}}接收的核心代码:private void ReceiveMessage(){udpClient = new UdpClient(port);udpClient.JoinMulticastGroup(broderCastIP);IPEndPoint remote = null;while (true){try{byte[] bytes = udpClient.Receive(ref remote);String str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);String[] splitString = str.Split(',');int s = splitString[0].Length;string remoteName = splitString[1];switch (splitString[0]){case"login":setLvwUser(remoteName, remote.Address);if (remoteName != name){SendMessage(remote.Address, "login2," + name);}SetStatue(remoteName, "on");break;case"login2":setLvwUser(remoteName, remote.Address);SetStatue(remoteName, "on");break;case"message":setChatMessage(splitString[2].ToString(), remoteName);break;case"logout":RemoveLvwUser(remoteName);SetStatue(remoteName, "out");break;case"request":DialogResult r = MessageBox.Show(remoteName + "向您发送文件" + splitString[2] + "确认接收吗?", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); RemoteFileName = splitString[2];if (r == DialogResult.OK){SendMessage(remote.Address, "yes,");}else{SendMessage(remote.Address, "no,");}break;case"yes":SendFile(remote.Address);break;case"no":MessageBox.Show("对方拒绝接收文件!");break;case"messageToall":setPublicMessage(splitString[2].ToString(), remoteName);break;case"on":changeLvwUser(str);break ;}}catch (Exception ex){MessageBox.Show(ex.Message);break;}}}4.4 文件的发送和接收文件的发送和接收涉及到的内容比较多,由于使用TCP协议进行数据的发送与接收,能确保文件发送过程中不出现丢失的现象,所以不涉及超时问题。