基于JavaSocket网络编程的山寨QQ

合集下载

基于Java Socket网络通信系统

基于Java Socket网络通信系统
in fi bas d g le e on TC P p t ol ro oc an s rv r r ns tti g, O d e e t a mi n S th c e s at li nt se d n fil s e th t e
2 S c e 机 制 okt
两端通过 S c e o k t机制进行连接 。 11客户端编程流程 . ①打开 S c e , o k t 新建一个 套接字
S c e 是面 向客 户 /服务器模型设 计的, 网络上 的两 ok t 个程序通过一个双向的通讯 连接 实现数据的交换 , 个双 向 这
摘 要: 分析 了目前基于 T P C ̄P的通信系统的现状与不足. 先进 的 J v o kt 术, 采用 aaSce 技 开发 出一个 Bs 式 的基于 T P /模 C
协议 的网络通信系统。该 系统充分利用 了Jv aa的跨平 台性和 A pe 体积小、功能强的特 性,结合 目前 已有 的典型通讯 软件 p lt
K y rs ok t / o eM l i l h e d ;S r e rn m t i g ewod :S c e ;B SM d , u tp e T ra s e v rT a s i tn
O 引 言
④为该普通套接字创建 输入和输 出流 ;
④从输入和输出流中读人或 写入 字节流, 进行相 应的处
B S b s d e w r cm u ia in s s e s d v l p d y t e a v n e e h iu o a a S c e , h s yt m /- a e n t ok o m n ct o y t m i e eo e b h da c d t c n q e f J v ok tT i s s e

仿QQ聊天软件MyQQ源代码教学(北大青鸟完整版)

仿QQ聊天软件MyQQ源代码教学(北大青鸟完整版)

需求分析——功能分析
主要功能:
注册与登录 好友管理 消息管理 个人设置
需求分析——界面分析
需要的界面:
注册界面 登录界面 登录后的主界面 查找/添加好友界面 聊天界面 系统消息界面 个人设置界面
头像列表界面
需求分析——辅助类分析
需要添加的辅助类:
DBHelper类 UserHelper 类
小组分工
4
4 4 4 4
软件开发流程
比尔盖子是一名建筑工人 起初只干一些比较简单的 建筑工作 凭个人技术和经验,不需要特 别设计,可以顺利完成
如同编写早期比较小的程序
软件开发流程
新任务:建造一间非常美 丽而完整的房间 工作变得复杂许多
像不断发展的软件,功能 越来越多,越来越复杂
软件开发流程
软件复杂性
图形用户界面 客户/服务器结构 分布式应用 数据通信 超大型关系型数据库
// 判断 ListView 中是否有选中的项 if (lvFaces.SelectedItems.Count == 0) { // … } // 获得选中的头像的索引 int faceId = lvFaces.SelectedItems[0].ImageIndex;
第四次集中编码:A任务
个人信息修改功能
第一次集中编码:难点分析
好友列表——第三方控件 SideBar
SbGroup 类型 Items 属性 Groups 属性 SbItem 类型
第一次集中编码:难点分析
SideBar
// 命名空间 using Aptech.UI; // 添加组 sbFriends.AddGroup("我的好友"); sbFriends.AddGroup("陌生人"); 显示的文字 // 添加项 SbItem item = new SbItem((string)dataReader["NickName"], (int)dataReader["FaceId"]); sbFriends.Groups[0].Items.Add(item); 显示的图像索引

假冒攻击的例子

假冒攻击的例子

假冒攻击的例子
以下是几个常见的假冒攻击的例子:
1. 钓鱼邮件:攻击者通过冒充合法的实体(如银行、电子商务平台、社交媒体等)发送伪装成正式通知或请求的电子邮件,诱使接收者点击恶意链接或提供个人敏感信息。

2. 假冒网站:攻击者创建与合法网站外观相似的虚假网站,用于诱骗用户输入登录凭据、个人信息或进行支付等操作。

这些假冒网站可能通过网络钓鱼链接、欺骗性广告或搜索引擎欺诈来引导受害者访问。

3. 假冒身份:攻击者通过冒充他人的身份,如盗用社交媒体账户、电子邮件账户或电话号码等,以获取用户的个人信息、敏感数据或进行进一步的欺诈行为。

4. 病毒和恶意软件传播:攻击者通过伪装成合法文件或程序,将恶意软件、病毒或间谍软件传播到用户的系统中。

这些恶意软件可能用于窃取个人信息、获取系统控制权,或者进一步在受害者系统上执行其他恶意活动。

总之,假冒攻击是指攻击者冒充合法实体或伪装成合法资源的手段,通过欺骗用户获取其个人信息、敏感数据或进行其他形式的欺诈行为。

用户应保持警惕,避免点击可疑链接、提供个人信息给不可信来源,以及下载来历不明的文件。

一个简单的即时通讯工具的设计与开发

一个简单的即时通讯工具的设计与开发

一个简单的即时通讯工具的设计与开发即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。

Java是当前比较流行的开发语言之一,它有着自己的易用特点与性能优势,比如跨平台、安全性、多线程、网络Socket编程、数据流概念等方面,因此通过对开源即时通讯LinuxQQ的研究和分析,基于Java语言和J2EE规范设计了一个即时通讯工具JICQ (Java for I seek you),并对其体系结构、构成模块及系统关键技术进行了分析与设计。

在系统设计与建模过程中,使用了UML和面向对象的分析、设计方法,并使用Rose作为建模工具;本系统基于j2se1.5,j2ee1.4,使用Eclipse等作为开发工具,在开发过程中用到了时下流行的重构开发方法,优化了系统的设计。

力图使系统具有安全、高效、实用、支持在不同系统平台运行等特点。

目录1 引言 (1)1.1项目开发背景 (1)1.1.1 项目背景 (1)1.1.2 技术背景 (1)1.2该系统设计的意义 (2)2相关理论及基础技术与开发平台 (2)2.1即时通讯应用工作原理分析 (2)2.2所用技术 (3)2.3工具及开发平台 (4)2.4系统配置要求 (5)3系统体系结构的设计 (5)3.1需求描述 (5)3.2系统架构设计 (6)3.3系统的总体功能设计 (7)3.3.1总体功能设计 (7)3.3.2注册模块设计 (8)3.3.3 登录模块设计 (10)3.3.4用户间交互模块设计 (12)3.4数据库设计 (14)3.4.1数据库物理模型 (14)3.4.2数据字典 (15)4系统实现 (16)4.1网络通讯编码实现 (16)4.1.1聊天客户端部分代码 (16)4.1.2服务器端监听与转发消息代码 (17)4.1.3服务端单线程上线处理代码 (18)4.2系统运行的效果图 (20)4.2.1 登录界面 (20)4.2.2 主界面 (20)4.2.3 群聊天界面 (21)4.2.4 好友聊天界面 (22)4.2.5 好友查找界面 (23)4.3注册模块的实现 (24)4.3.1 数据库连接 (24)4.3.2 字符编码过滤器的核心代码 (24)4.4注册模块运行效果图 (25)4.4.1 主页面 (25)4.4.2 注册页面 (25)5 系统测试与运行 (26)结论 (27)1引言1.1 项目开发背景1.1.1 项目背景“即时通信产品”最早的创始人是三个以色列青年,是他们在1996年做出来的,取名叫ICQ( I seek you)。

基于JAVA SOCKET网络编程的一种新实现

基于JAVA SOCKET网络编程的一种新实现

b e nJ s a d o AVA.S c e n e vrS c e l si AVA a d te p ga o k ta d S re o k tca n J s n r rmmig a po c fsr e emia rga a d cin emia h o n p ra h o evrtr n p rm l ttr n l l o n e
【 关键 词】J V O K T A A S C E ,网络编程 , 套接 字 , 套接 字 流
中图分类号 :1 9 . 133 9 P 0
ABS TRACT
sm u a ie e b sc mo e fn t o k c mmu i ain p o r m rz s t a i d lo e r o h w nct rga o
较为方便 的编写程序 , 实现网络上数据的传递。 Jv 在 aa
中, 有专门的 Sce类来处理用户的请求和响应。 okt 利用 S kt c o e 类的方法 , 就可以实现两台计算机之 间的通信 。 这里就介绍一下在 Jv aa中如何利用 S kt c o e实现 网络 编程 。
1 套 接 字 ( okt Sce)
文献标识 码 :A
i g w t o k t n d p e e t e i lme tt n o e o k p o r mmi g n ih S c e ,a r s ns t mp e n a o fn t r r g a h i w n
O h a i o C BP p o o o y tm t cu e t i a e n lz s t e c n e to ewo k p o e s c mmu ia in a d n t e b s fT P rt c ls s s e sr tr , h s p p ra ay e h o c p fn t r rc s o u nc t , n o

基于Java Socket的聊天室系统设计与实现

基于Java Socket的聊天室系统设计与实现
Absr c : n o o k ti ewo k p o r mmig it ra e T i a e nto u e h c a im t a t Wi d ws S c e sa n t r r g a n ne fc . h sp p ri r d c d t e me h n s
户端根据输入 Sr r I e e 的 P地址连入相应的服务器参与聊天活动, v 服务器上显示当前在线的用户信
息 , 对用户进 入或 断开 的信 息加 以显示。 并 关键词 :aa 接 字 ; Jv 套 聊天 室 ; 户端 ; 客 服务器
D I 码 : .9 9 ii n 1 0 2 7 .0 0 0 . 1 O编 1 3 6 /.s . 0 2— 2 9 2 1 .5 0 9 0 s
中图分 类号 :P 9 T 33
文献标识 码 : A
文章编号 :0 2— 2 9 2 1 )5— 0 6— 2 10 2 7 (0 0 O 0 6 0
De in & I lme to a y t m a e n J v c e sg mpe n fCh tS se B s d o a a So k t
ci t o n c dwt cm a besr r n ie h tn codn eI f e e i ut .nte l n cn et i o p t l ev dj ndcat gacri t t Po r r n t d I h e e h i ea o i goh sv p e
H ig j g L a g h n U J — i ,U M n — og n n
( u a io i l n l t m ca i l o t h i, h nsa4 0 2 ,hn ) H n nBo gc dEe r eh n a le n C a gh 1 16 C i l aa co c P yc c a

用Java Socket实现网络聊天室

用Java Socket实现网络聊天室

务的端 口为8 端 口. e n t 2 端 口, 0 t le 为 3 f p为 2 端 口。通常.从 0 1 2 t 1 — 0 3的端
程序使用 。
L号为系统保 留.大于 1 2 『 0 3提供给应 用 F i t t e m( e rnSra nw
B f e e o tu S r a u f r d u p t t em
t ryi
首先 分析一下聊天室的基 本功能 需

操 作系统的通 用网络编程标准 。在 网络 编程中最常用的方案便是客户 / 务器模 服 型。奉文提 出了在客户机 /服务器 模型 下用 j v o k t a a sc e 实现 I t r e n en t巾常见 的聊天 室软件 的解 决方案 。 Sc e o k t简介
e :
户 当用 户差 闭客 户 端退 出时 . 结束
与用户的 会话 .在服务器端注 销此用 户 2.客户 端 :提 供 良好 的用户 界 面 . 便 于用 户 进 行 连接 、交 谈 当与
个 具有 S c e 接 口的计算机通信 。『 okt 盏用 程序在 网络上传输 ,接收 的信 息都通过 这个 S c e 接 口来 实现 。在应 用开发中 okt
S s e u . r a l (E r r y tm o t p it n r o : e: )
端 有无 数据 发 出, 如有 则接 收数 据 , 更新显示 。 四 、聊 天室应 用程 序类音 规 划 9
经过分析 笔者主 要确定 了如下类 :
服务器端 :

如睹络上最通用 的 t 1 e 、f p等 .就 en t t 如主机 接收 到此请求 .则通信 建 是基于 s c e o k t的服 务程序 ,同一 台主机 立 .服务端产 生一个 S c e o k t实例 .同 可 以提供 多种 服 务,但他 们 并不冲 突 . 此 客 户端 进 行 通 信 ,如 上 。 只因为他们的通信端 口不同,如 h t t p服 然后客户端和服务端分别打 开相 应 的输入输 出流 进行数据 传送 。

基于Java的Socket模型通讯实现

基于Java的Socket模型通讯实现
第2 9卷 第 2期
21 0 0年 3 月
许 昌 学 院 学报
J OURNAL 0F XUCHANG UNI VERS TY I
Vo . 2 1 9. NO 2 . Ma . 201 r 0
文章 编 号 :6 1— 8 4 2 1 ) 2— 0 4—0 17 9 2 ( 00 0 0 7 4
求 , 务器将 处理 此请 求 , 后通 过 Sc e 将 结果返 回给用 户 … . 服 然 okt S c e 通信 机制 提供 了两 种通讯 方式 : o kt 有联 接 和无 联 接方 式 , 别面 向不 同的应 用 需 求. 用 有联 接 分 使 方式 时 , 通信 链路 提供 了可靠 的 , 全双 工 的字 节流 服务. 该方式 下 , 信双 方必须 创建一 个联 接过程 并建 在 通
和方 法 , 很好 地 实现 了模块 化和 信息 隐藏 .aa程序可 以有 多 个执 行 线程 , 户 在不 中断计 算线 程 的前 提 Jv 用
下与 系统进 行交 互 . 多线程 保证 了较 高的执 行效率 .
2 Jv aa网 络 编 程 的 实 现
客户端 需通 过浏 览器 与服务 器通 讯 , 客 户 端使 用 A pe, 故 p l 服务 器 端 使用 A p ct n 因服 务 器需 应 t p lao ; i i 答多 个客 户的请 求 , 以设 置成 多线程 ; 所 两端 通信 采用 Sc e 机 制. ok t
立一 条通讯 链路 , 以后 的 网络通 信操作 完全 在这一 对进 程 之 间进 行 , 通信 完 毕关 闭 此联 接 过程 . 用无 联 使
接 方式 时其 系统 开销 比有联 接方 式小 , 但通信 链路 提供 了不可靠 的数 据报 服务 , 能保证 信 源所 传输 的数 不
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于J a v a S o c k e t网络编程的山寨Q Q标准化管理处编码[BBX968T-XBB8968-NNJ668-MM9N]基于Java Socket 网络编程的山寨QQ(学习韩顺平老师的视频整理出的笔记)内容含盖:1.Java 面向对象编程2.界面编程3.网络编程4.多线程5.文件I/O操作6.数据库操作一、网络基础TCP/IP协议Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。

TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。

协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。

而IP是给因特网的每一台电脑规定一个地址。

二、端口端口详解在开始讲什么是端口之前,我们先来聊一聊什么是 port 呢?常常在网络上听说『我的主机开了多少的 port ,会不会被入侵呀!?或者是说『开那个 port 会比较安全?又,我的服务应该对应什么 port 呀?呵呵!很神奇吧!怎么一部主机上面有这么多的奇怪的port 呢?这个 port 有什么作用呢?由于每种网络的服务功能都不相同,因此有必要将不同的封包送给不同的服务来处理,所以啰,当你的主机同时开启了FTP与 WWW 服务的时候,那么别人送来的资料封包,就会依照 TCP 上面的 port 号码来给 FTP 这个服务或者是 WWW 这个服务来处理,当然就不会搞乱啰!(注:嘿嘿!有些很少接触到网络的朋友,常常会问说:咦!为什么你的计算机同时有 FTP、WWW、E-Mail 这么多服务,但是人家传资料过来,你的计算机怎么知道如何判断?计算机真的都不会误判吗?!现在知道为什么了吗?!对啦!就是因为 port 不同嘛!你可以这样想啦,有一天,你要去银行存钱,那个银行就可以想成是主机,然后,银行当然不可能只有一种业务,里头就有相当多的窗口,那么你一进大门的时候,在门口的服务人员就会问你说:"嗨!你好呀!你要做些什么事?"你跟他说:"我要存钱呀!",服务员接着就会告诉你:喝!那么请前往三号窗口!那边的人员会帮您服务!这个时候你总该不会往其它的窗口跑吧?! ""这些窗口就可以想成是port 啰!所以啦!每一种服务都有特定的 port 在监听!您无须担心计算机会误判的问题呦! )·每一个 TCP 连接都必须由一端(通常为 client )发起请求,这个 port 通常是随机选择大于 1024 以上(因为0-1023有特殊作用,被预定,如FTP、HTTP、SMTP等)的port 号来进行!其 TCP 封包会将(且只将) SYN 旗标设定起来!这是整个联机的第一个封包;·如果另一端(通常为 Server ) 接受这个请求的话(当然啰,特殊的服务需要以特殊的 port 来进行,例如 FTP 的 port 21 ),则会向请求端送回整个联机的第二个封包!其上除了 SYN 旗标之外同时还将 ACK 旗标也设定起来,并同时在本机端建立资源以待联机之需;·然后,请求端获得服务端第一个响应封包之后,必须再响应对方一个确认封包,此时封包只带 ACK 旗标(事实上,后继联机中的所有封包都必须带有 ACK 旗标);·只有当服务端收到请求端的确认( ACK )封包(也就是整个联机的第三个封包)之后,两端的联机才能正式建立。

这就是所谓的 TCP 联机的'三次握手( Three-Way Handshake )'的原理。

经过三向交握之后,呵呵!你的 client 端的 port 通常是高于 1024 的随机取得的port,至于主机端则视当时的服务是开启哪一个 port 而定,例如 WWW 选择 80 而 FTP 则以 21 为正常的联机信道!总而言之,我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。

根据提供服务类型的不同,端口分为两种,一种是TCP端口,一种是UDP端口。

计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式大多采用UDP协议。

对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口。

那么,如果攻击者使用软件扫描目标计算机,得到目标计算机打开的端口,也就了解了目标计算机提供了哪些服务。

我们都知道,提供服务就一定有服务软件的漏洞,根据这些,攻击者可以达到对目标计算机的初步了解。

如果计算机的端口打开太多,而管理者不知道,那么,有两种情况:一种是提供了服务而管理者没有注意,比如安装IIS的时候,软件就会自动增加很多服务,而管理员可能没有注意到;一种是服务器被攻击者安装木马,通过特殊的端口进行通信。

这两种情况都是很危险的,说到底,就是管理员不了解服务器提供的服务,减小了系统安全系数。

(扯远了)端口分类端口一共有65535个 0号是保留端口1-1024 是固定端口,又叫又名端口即被某些程序固定使用,一般程序员不使用1025-65535 是动态端口这些端口是程序员可以使用的单工、半双工和全双工1.单工通信(Simplex Communication)即数据传输只能在一个方向上进行,比如甲可以向乙发送信息,但乙不能向甲发送信息2.半双工(Half Duplex)方式:通信双方设备既是发送器,也是接收器,两台设备可以相互传送数据,但某一时刻则只能向一个方向传送数据。

例如,步话机是半双工设备,因为在一个时刻只能有一方说话。

3.全双工(Full Duplex)方式:通信双方设备既是发送器,也是接收器,两台设备可以同时在两个方向上传送数据。

例如,电话是全双工设备,因为双方可同时说话。

Java socket 通信示意图Server Client单工通信只能向服务端发送信息/***************************************** SimplexServeraccept message from client*****************************************/ import java.io.*;import .*;public class MyServer{private ServerSocket ss;private Socket socket;private BufferedReader in;// private PrintWriter out;public static void main(String args[]){ new MyServer();}public MyServer(){try{ss=new ServerSocket(10000);System.out.println("Listen 10000............");socket=ss.accept();in=new BufferedReader( new InputStreamReader(socket.getInputStream()));String massage=in.readLine();System.out.println("[Client]"+massage);}catch(Exception e){System.out.println(e);}finally{try{if(in!=null){in.close();}if(socket!=null){socket.close();}if(ss!=null){ss.close();}}catch(Exception e){System.out.println(e);}}}}/***************************************SimplexClientsend message to Server***************************************/import java.io.*;import .*;public class MyClient{private Socket socket;private BufferedReader in;private PrintWriter out;public static void main(String args[]){new MyClient();}public MyClient(){try{socket=new Socket("127.0.1.1",10000);//"127.0.1.1" your computer IPin=new BufferedReader(new InputStreamReader(System.in));String massage=in.readLine();out=new PrintWriter(socket.getOutputStream(),true);out.println(massage);}catch(Exception e){System.out.println(e);}finally{try{socket.close();}catch(Exception e1){System.out.println(e1);}}}}因为是用手工输入测试中文注释会报错,所以没有用中文,server中的接收数据处理部分一般用循环,为了方便测试,因此此没有用测试开两个窗口一个客户端一个服务端先打开服务端半双工/*******************************************half DuplexServeraccept message from clientsend massage to client********************************************/ import java.io.*;import .*;public class MyServer1{private ServerSocket ss;private Socket socket;private BufferedReader in,in1;private PrintWriter out;public static void main(String args[]){new MyServer1();}public MyServer1(){try{ss=new ServerSocket(10000);System.out.println("listening 10000");socket=ss.accept();System.out.println("link 10000");// acceptMessagein=new BufferedReader(new InputStreamReader(socket.getInputStream()));String acceptMessage=in.readLine();System.out.println("[Client] "+acceptMessage);out=new PrintWriter(socket.getOutputStream(),true);//sendMessagein1=new BufferedReader(new InputStreamReader(System.in));String sendMessage=in1.readLine();out.println(sendMessage);}catch(Exception e){System.out.println(e);}finally{try{if(in1!=null){in1.close();}if(in!=null){in.close();}if(socket!=null){socket.close();}if(ss!=null){ss.close();}}catch(Exception e){System.out.println(e);}}}}/************************************** half DuplexServeraccept message from serversend massage to server****************************************/ import java.io.*;import .*;public class MyClient1{private Socket socket;private BufferedReader in,in1;private PrintWriter out;public static void main(String args[]){new MyClient1();}public MyClient1(){try{socket=new Socket("127.0.1.1",10000);//"127.0.1.1" your computer IP//sendMessagein1=new BufferedReader(new InputStreamReader(System.in));out=new PrintWriter(socket.getOutputStream(),true);String sendMessage=in1.readLine();out.println(sendMessage);//acceptMessagein=new BufferedReader(new InputStreamReader(socket.getInputStream()));String acceptMessage=in.readLine();System.out.println("[Server] "+acceptMessage);}catch(Exception e){System.out.println(e);}finally{try{if(in1!=null){in1.close();}if(in!=null){in.close();}if(socket!=null){socket.close();}}catch(Exception e){System.out.println(e);}}}}客户端向服务器发完信息,只能等待服务端发送,全双工/**********************************DuplexServeraccept message from clientsend massage to client*********************************/import java.io.*;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyServer3 extends JFrame implements ActionListener{ JTextArea jta;JTextField jtf;JButton jb;JPanel jpl;JScrollPane jsp;BufferedReader in;PrintWriter out;public static void main(String args[]){new MyServer3();}public MyServer3(){jta=new JTextArea();jtf=new JTextField();jb=new JButton("send");jb.addActionListener(this);jpl=new JPanel(new BorderLayout());jpl.add(jtf,"Center");jpl.add(jb,"East");jsp=new JScrollPane(jta);this.add(jsp,"Center");this.add(jpl,"South");this.setTitle("Server");this.setSize(350,250);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);try{ServerSocket ss=new ServerSocket(10000);Socket socket=ss.accept();in=new BufferedReader(new InputStreamReader(socket.getInputStream()));out=newPrintWriter(socket.getOutputStream(),true);while(true){String message=in.readLine()+"\n";jta.append("Client: "+message);}}catch(Exception e){System.out.println(e);}finally{try{if(out!=null)out.close();if(in!=null)in.close();}catch(Exception e){System.out.println(e);}}}public void actionPerformed(ActionEvent e){if(e.getSource()==jb){String message=jtf.getText();jta.append("Server: "+message+"\n");out.println(message);jtf.setText("");}}}/**********************************DuplexServeraccept message from serversend massage to server*********************************/import java.io.*;import .*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class MyClient3 extends JFrame implements ActionListener{ JTextArea jta;JTextField jtf;JButton jb;JPanel jpl;JScrollPane jsp;BufferedReader in;PrintWriter out;public static void main(String args[]){new MyClient3();}public MyClient3(){jta=new JTextArea();jtf=new JTextField();jb=new JButton("send");jb.addActionListener(this);jpl=new JPanel(new BorderLayout());jpl.add(jtf,"Center");jpl.add(jb,"East");jsp=new JScrollPane(jta);this.add(jsp,"Center");this.add(jpl,"South");this.setTitle("Client");this.setSize(350,250);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);try{Socket socket=new Socket("127.0.1.1",10000);in=new BufferedReader(new InputStreamReader(socket.getInputStream()));out=newPrintWriter(socket.getOutputStream(),true);while(true){String message=in.readLine()+"\n";jta.append("Server: "+message);}}catch(Exception e){System.out.println(e);}finally{try{if(out!=null)out.close();if(in!=null)in.close();}catch(Exception e){System.out.println(e);}}}public void actionPerformed(ActionEvent e){if(e.getSource()==jb){String message=jtf.getText();jta.append("Client: "+message+"\n");out.println(message);jtf.setText("");}}}。

相关文档
最新文档