以前写的,照贴了。。。服务器端:import java.awt.*\x0d\x0aimport java.awt.event.WindowAdapter\x0d\x0aimport java.awt.event.WindowEvent\x0d\x0aimport java.io.*\x0d\x0aimport java.net.*/*6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。\x0d\x0a* 客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。\x0d\x0a* (20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)*/\x0d\x0apublic class N4BT6 extends Frame\x0d\x0a{\x0d\x0aDatagramSocket socket \x0d\x0aDatagramPacket packet byte[] buf \x0d\x0aFile file \x0d\x0aFileInputStream input\x0d\x0aString message = "该文件不存在"\x0d\x0aTextArea text\x0d\x0apublic N4BT6(String title)\x0d\x0a{\x0d\x0asuper(title)\x0d\x0atext = new TextArea(6,4)\x0d\x0aadd(text)\x0d\x0asetSize(400, 300)\x0d\x0asetVisible(true)\x0d\x0aaddWindowListener(new WindowAdapter()\x0d\x0a{\x0d\x0apublic void windowClosing(WindowEvent e)\x0d\x0a{\x0d\x0adispose()\x0d\x0a}\x0d\x0a})\x0d\x0a\x0d\x0abuf = new byte[1024]\x0d\x0atry\x0d\x0a{\x0d\x0asocket = new DatagramSocket(1230)\x0d\x0apacket = new DatagramPacket(buf, buf.length)\x0d\x0asocket.receive(packet)\x0d\x0afile = new File(new String(packet.getData()))\x0d\x0asocket = new DatagramSocket()\x0d\x0a} \x0d\x0acatch (Exception e)\x0d\x0a{e.printStackTrace()\x0d\x0a}\x0d\x0a\x0d\x0aif(file.exists())\x0d\x0a{\x0d\x0atry\x0d\x0a{\x0d\x0abuf = new byte[(int)file.length()]\x0d\x0apacket = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234)\x0d\x0ainput = new FileInputStream(file)\x0d\x0ainput.read(buf)\x0d\x0asocket.send(packet)\x0d\x0a}\x0d\x0acatch (IOException e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0aelse\x0d\x0a{\x0d\x0atry\x0d\x0a{\x0d\x0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,\x0d\x0aInetAddress.getLocalHost(),1234)\x0d\x0asocket.send(packet)\x0d\x0a}\x0d\x0acatch (Exception e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a}\x0d\x0apublic static void main(String[] args)\x0d\x0a{\x0d\x0anew N4BT6("Server")\x0d\x0a}\x0d\x0a}\x0d\x0a客户端:import java.awt.*\x0d\x0aimport java.awt.event.*\x0d\x0aimport java.net.DatagramPacket\x0d\x0aimport java.net.DatagramSocket\x0d\x0aimport java.net.InetAddresspublic class N4BT6_2 extends Frame\x0d\x0a{\x0d\x0aTextArea text\x0d\x0aString message = "Q.txt"\x0d\x0aDatagramSocket socket \x0d\x0aDatagramPacket packet\x0d\x0abyte[] buf\x0d\x0apublic N4BT6_2(String title)\x0d\x0a{\x0d\x0asuper(title)\x0d\x0atext = new TextArea(6,4)\x0d\x0aadd(text)\x0d\x0asetSize(400, 300)\x0d\x0asetVisible(true)\x0d\x0aaddWindowListener(new WindowAdapter()\x0d\x0a{\x0d\x0apublic void windowClosing(WindowEvent e)\x0d\x0a{\x0d\x0adispose()\x0d\x0a}\x0d\x0a})\x0d\x0atry\x0d\x0a{\x0d\x0a\x0d\x0asocket = new DatagramSocket()\x0d\x0apacket = new DatagramPacket(message.getBytes(),message.getBytes().length,\x0d\x0aInetAddress.getLocalHost(),1230)\x0d\x0asocket.send(packet)\x0d\x0a}\x0d\x0acatch (Exception e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a\x0d\x0atry\x0d\x0a{\x0d\x0abuf = new byte[1024]\x0d\x0asocket = new DatagramSocket(1234)\x0d\x0apacket = new DatagramPacket(buf,buf.length)\x0d\x0asocket.receive(packet)\x0d\x0atext.append(new String(buf))\x0d\x0a}\x0d\x0acatch (Exception e) \x0d\x0a{\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0apublic static void main(String[] args)\x0d\x0a{\x0d\x0anew N4BT6_2("Client")\x0d\x0a}\x0d\x0a}服务器端源码:\x0d\x0aimport java.io.BufferedReader\x0d\x0aimport java.io.File\x0d\x0aimport java.io.FileNotFoundException\x0d\x0aimport java.io.FileOutputStream\x0d\x0aimport java.io.IOException\x0d\x0aimport java.io.InputStream\x0d\x0aimport java.io.InputStreamReader\x0d\x0aimport java.net.ServerSocket\x0d\x0aimport java.net.Socket\x0d\x0a\x0d\x0a/**\x0d\x0a *\x0d\x0a * 文件名:ServerReceive.java\x0d\x0a * 实现功能:作为服务器接收客户端发送的文件\x0d\x0a *\x0d\x0a * 具体实现过程:\x0d\x0a * 1、建立SocketServer,等待客户端的连接\x0d\x0a * 2、当有客户端连接的时候,按照双方的约定,这时要读取一行数据\x0d\x0a * 其中保存客户端要发送的文件名和文件大小信息\x0d\x0a * 3、根据文件名在本地创建文件,并建立好流通信\x0d\x0a * 4、循环接收数据包,将数据包写入文件\x0d\x0a * 5、当接收数据的长度等于提前文件发过来的文件长度,即表示文件接收完毕,关闭文件\x0d\x0a * 6、文件接收工作结束\x0d\x0a\x0d\x0apublic class ServerReceive {\x0d\x0a \x0d\x0apublic static void main(String[] args) {\x0d\x0a \x0d\x0a/**与服务器建立连接的通信句柄*/\x0d\x0aServerSocket ss = null\x0d\x0aSocket s = null\x0d\x0a \x0d\x0a/**定义用于在接收后在本地创建的文件对象和文件输出流对象*/\x0d\x0aFile file = null\x0d\x0aFileOutputStream fos = null\x0d\x0a \x0d\x0a/**定义输入流,使用socket的inputStream对数据包进行输入*/\x0d\x0aInputStream is = null\x0d\x0a \x0d\x0a/**定义byte数组来作为数据包的存储数据包*/\x0d\x0abyte[] buffer = new byte[4096 * 5]\x0d\x0a \x0d\x0a/**用来接收文件发送请求的字符串*/\x0d\x0aString comm = null\x0d\x0a\x0d\x0a/**建立socekt通信,等待服务器进行连接*/\x0d\x0atry {\x0d\x0ass = new ServerSocket(4004)\x0d\x0as = ss.accept()\x0d\x0a} catch (IOException e) {\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a\x0d\x0a/**读取一行客户端发送过来的约定信息*/\x0d\x0atry {\x0d\x0aInputStreamReader isr = new InputStreamReader(s.getInputStream())\x0d\x0aBufferedReader br = new BufferedReader(isr)\x0d\x0acomm = br.readLine()\x0d\x0a} catch (IOException e) {\x0d\x0aSystem.out.println("服务器与客户端断开连接")\x0d\x0a}\x0d\x0a \x0d\x0a/**开始解析客户端发送过来的请求命令*/\x0d\x0aint index = comm.indexOf("/#")\x0d\x0a \x0d\x0a/**判断协议是否为发送文件的协议*/\x0d\x0aString xieyi = comm.substring(0, index)\x0d\x0aif(!xieyi.equals("111")){\x0d\x0aSystem.out.println("服务器收到的协议码不正确")\x0d\x0areturn\x0d\x0a}\x0d\x0a \x0d\x0a/**解析出文件的名字和大小*/\x0d\x0acomm = comm.substring(index + 2)\x0d\x0aindex = comm.indexOf("/#")\x0d\x0aString filename = comm.substring(0, index).trim()\x0d\x0aString filesize = comm.substring(index + 2).trim()\x0d\x0a\x0d\x0a/**创建空文件,用来进行接收文件*/\x0d\x0afile = new File(filename)\x0d\x0aif(!file.exists()){\x0d\x0atry {\x0d\x0afile.createNewFile()\x0d\x0a} catch (IOException e) {\x0d\x0aSystem.out.println("服务器端创建文件失败")\x0d\x0a}\x0d\x0a}else{\x0d\x0a/**在此也可以询问是否覆盖*/\x0d\x0aSystem.out.println("本路径已存在相同文件,进行覆盖")\x0d\x0a}\x0d\x0a \x0d\x0a/**【以上就是客户端代码中写到的服务器的准备部分】*/\x0d\x0a\x0d\x0a/**\x0d\x0a * 服务器接收文件的关键代码*/\x0d\x0atry {\x0d\x0a/**将文件包装到文件输出流对象中*/\x0d\x0afos = new FileOutputStream(file)\x0d\x0along file_size = Long.parseLong(filesize)\x0d\x0ais = s.getInputStream()\x0d\x0a/**size为每次接收数据包的长度*/\x0d\x0aint size = 0\x0d\x0a/**count用来记录已接收到文件的长度*/\x0d\x0along count = 0\x0d\x0a \x0d\x0a/**使用while循环接收数据包*/\x0d\x0awhile(count
回答于 2022-12-11没有描述清楚。按照字面理解,服务端根据客户端发送的信息判断是否发送文件是吗?服务器端根据客户端请求的信息,如果要返回文件,服务器端读取文件向客户端写文件,比如读取文件向客户端写字节流。客户端肯定是不能直接访问服务器端文件的。如果文件是放在可以公开访问的地址,返回地址,客户端下载就是了。所以你的问题没有描述清楚。
java网络编程应该怎样在客户端和服务器间实现通信?
给您推荐相同类型的内容:
台式电脑怎么设置自动休眠
方法步骤如下:1、首先打开计算机,在计算机内找到“开始”选项并单击,在弹出的界面内找到“控制面板”选项单击。2、然后在弹出的界面内找到“性能和维护”选项并单击。3、然后在弹出的界面内找到“电源选项”选项并使用鼠标单击。4、然后在弹出的界面js之JSON.stringify()使用详解
方法定义:JSON.stringify(value, replacer, space) 参数说明: value:js对象 replacer:替换对象,可以是一个方法、对象或数组,将value按照替换规则展示。 space:填JS常用设计模式(MVC、MVP、MVVM及其他设计模式)
一、MVC MVC模式的意思是,软件可以分成三个部分。 视图(View):用户界面。 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下。 View 传送指令到 Contmac如何关闭触摸板?
方法1、如果在使用过程中遇到键盘和触摸板突然失灵的情况,这时请合上屏幕,关闭一分钟以上。2、关闭屏幕一分钟以后,等待系统恢复键盘识别,重新打开屏幕。随后尝试使用键盘和触摸板,检查是否能够正常使用。3、如果关闭屏幕仍然不能解决故障的话,可js对url进行编码和解码
*** 只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不经过编码直接用于 URL。 ***例如:搜索的中文关键字,复制网址之后再粘贴就会发现该URL已经被转码。 1、escapejs中三角函数sincostancot角度计算
正弦(sin) sinA = ac sinθ = yr 余弦(cos) cosA = bc cosθ = yr 正切(tan) tanA = a怎么把图片旋转?
怎么把图片任意角度旋转? word就可以做啊 插入图片----板式----大小----旋转----确定,然后保存图片,或者截图。 自己试一试看,我给你做了一张JPG图片怎么旋转? 1、在你要打骇的图片上点击右键--打开方式。电脑怎么设置wifi
相信很多人都知道用笔记本怎么开wifi,但不知道怎么用电脑开wifi吧!下面就让我介绍如何在电脑上怎么设置wifi。 首先,我们打开控制面板第一步:打开网络共享中心 第二步:点击“设置新的`连接或网络” 第三步:然后选择“设置无导航造句-用导航造句
1. 以希望为翼,以理想为 导航 ,飞向成功的怀抱。叩亮希望之灯,梦想亮着,前途光着,纵使奇险险壑耸立着,惊流急滩阻挡着,又何惧之有?2. 理想就是人生 导航 的灯塔,我们每个人都应该有自己的理想。有一个人曾经说过:没有志向的人就好比css 标签上 title 和 alt 的区别
1. alt 是给搜索引擎识别, 在图像无法显示时的替代文本title 是关于元素的注释信息, 主要是给用户解读 。 2. 当鼠标放到文字或是图片上时有 title 文字显示 。 3. (因为IE不标准)在 IE 浏览器中 alt如何在Ruby中使用字符串方法
正如你所知道的,ruby字符串被称为一流的对象,它使用了大量的查询和操作方法。一个最基本的字符串操作是把一个字符串分割成多个子字符串。如果你有一个字符串,如“foo, bar, baz”而你希望的是这样三个字符串“foo”,“bar”,“b电脑主板故障诊断卡是什么
工作原理实现原理电脑主板故障诊断卡当BIOS要进行某项测试动作时,首先将笔记本电脑的自检程序(POST)写入80H地址,如果测试顺利完成,再写入下一个自检程序,因此如果发生错误或死机,根据80H地址的POST CODE值,就电脑彻底删除的文件如何恢复
很多人会不小心,将一些重要的文件资料也删除。那么,当重要的文件资料被删除后,我们又有什么方法可以将其恢复和找回呢?下面小编就为朋友们简单介绍下常用的恢复被删除文件的方法吧。彻底删除的文件怎么恢复操作步骤:第一步:下载并安装失易得数据恢复css怎么设置特殊字符的大小和宽度?
新建一个html文件,命名为test.html,用于讲解css如何使每个字符宽度一样。 2 6 在test.html文件内,使用div标签创建一行字符,用于测试。 3 6 在test.html文件内,设置div标签的class属性为stjava如何创建一颗二叉树
计算机科学中,二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(leftsubtree)和“右子树”(rightsubtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度用js实现”右键+目标另存为“一步实现
js:function fileDownload(fileType){ var sUrl = "download.jsp" sUrl += "?fileType="+fileType location什么牌子的笔记本电脑玩奥特曼格斗进化3不卡
惠普 WASD 暗影精灵(i5标配版),15.6英寸1920×1080高清屏幕,标压版i5-6300H,4G内存,500G硬盘,GTX950M4G[128位]D3高端独显,Win10系统,背光键盘,黑色外观,4999元左右宏碁 T5000如何做字幕
做字幕的话,要看你是在什么上面做字幕,1、如果你是在电脑上做字幕的话,用pr就行,也不是很难,学一下就会。2、如果你是在手机上做的话,我建议你用清爽视频编辑器做字幕,也很简单:在手机上下载安装清爽视频编辑器并打开,进入首页,在首页的热有什么单机游戏是可以联机的啊
1.《饥荒联机版》是由KleiEntertainment开发的一款动作冒险类求生游戏,于2013年4月23日在PC上发行,2015年7月9日在iOS发布口袋版。2.《命令与征服:红色警戒》是Westwood及EA开发,美国艺电游戏公司WinXP如何节省内存
电脑使用久了总是会出现卡顿等现象,这让人很头疼,因为有时候玩游戏,如果卡一下,也许结局就不一样了。那么这时候我们就应该对电脑提速,不过很多用户不知道怎么对电脑提速,为此我赶紧整理了WindowsXP电脑提速的方法来帮助大家,大家赶紧看看吧在电脑上如何下载游戏?
电脑下载游戏的方法如下:工具/原料:联想小新Air12、win10、Steam16.13.1767281、在“Steam”软件主面板中,选择【商店】进入。2、在“商店”版面中,选择【浏览】进入。3、在“浏览”弹出下拉框中,选择【免费游玩网吧服务器开机顺序
开机顺序:1、光纤终端或光猫 2、交换机3、路由器 4、收费机5、游戏服务器 6、同步机(也称工作机、网管机等)7、电影服务器和其他其实原则就是“网络通了再开机”,否则一些需要进行网络验证的网吧软件就无法正常启动了。如果是非断电重启的话有哪些css设计能让网站更炫酷
当时css3的动画效果。但是对于IE低版本却不兼容;如果我的回答解决了你的问题,请帮忙点去访问一下我的网站作为回报。一个苦逼SEO人员的请求。外卖加盟,加盟外卖,香菇外卖,直播厨房,中心厨房,家庭厨房,直播外卖,创业项目,加盟代理首先准台电的平板电脑怎么样?
一、优点1、整体还算是比较好用,看下载电影画面比较清晰,看在线电影相对也还算可以,主要是看片源。高清图片也不错的。2、自带的基础软件可以升级,不能卸载,很好用。我又安装了uc浏览器,下载很方便。3、wifi上网很给力,只要无线路由开着电脑弹出来的广告怎么关了
关闭电脑弹出来的广告的方法一:1、按下组合键【win+r】打开运行,或者直接在【开始】的搜索框内输入【运行】并打开,然后在弹框内输入【msconfig】并回车打开。2、进入【系统配置】后,点击【启动】,取消勾选里面会弹出广告的项目,最后再点笔记本电脑进入睡眠状态不断网怎么设置?
1.打开电脑,右键单击我的电脑调出功能框,在功能框中找到管理选项,点击该选项进入到管理页面中。2.在新弹出的页面找到设备管理器选项,点击选择该选项进入到设备管理器页面中。3.在新弹出的页面找到网络适配器选项,点击选择该选项进入到网络适配器页电脑WiFi软件哪个好用
电脑WiFi软件有:360免费WiFi、WiFi共享精灵、猎豹免费WiFi等;1、360免费WiFi:是一款免费、操作极其简单的WiFi共享软件,只需运行该软件,就能将联网的电脑瞬间变成免费的WiFi路由器,从而让手机、PAD等硬件为什么京东直播电脑看不了
你购买的时候,他们有后台可以看到购买的记录2. 京东怎样看直播具体的操作如下:一个账号同时在两部手机上登陆,然后一个手机用来直播,另外的一个手机在直播管理中心看这一场直播的数据。1.浏览量,浏览量是否有增长,可以证明直播间有没有真人进入。2css样式中怎么能让一行字水平居中显示
需要准备的材料分别有:电脑、浏览器、html编辑器。1、首先,打开html编辑器,新建html文件,例如:index.html。2、在index.html中的<style>标签中,输入css代码:p {text-aR语言实战package总结
Hmisc 包的 minor.tick( ) _______包的_______函数可以添加次要刻度线 Hmisc 包中的 describe()函数 ______包的_______函数可返回变量和观测的数量、info 值、缺失值和唯一