黑马程序员——网络编程之CTP传输-程序员宅基地

技术标签: java  网络  移动开发  

                                     android培训、java培训、期待与您交流!  
TCP传输
Socket和ServerSocket,实现了两台机器间的套接字端点,绑定本机IP地址。建立客户端和服务端,客户端对应的对象是Socket,服务端对应的对象是ServerSocket。
        //客户端部分
public class ClientA {
private String filePath ;
public String getFilePath() { return filePath;}
public void setFilePath(String filePath ) {  thisfilePath = filePath;}
public String getHost() { return host;}
public void setHost(String host ) {  thishost = host;}
public int getPort() { return port}
public void setPort(int port) { this.port = port ;}
private String host ;
private int port;
           public static void main (String[] args) {
                    // TODO Auto-generated method stub
ClientA ca=new ClientA();
ca.setHost ("127.0.0.1") ;
ca.setPort (9527) ;
ca.setFilePath ("d:\\") ;
ca.upLoad ("N1.mp3") ;
           }
           //上传方法
           private void upLoad(String fileName ) {
                    // TODO Auto-generated method stub
                   Socket s =null;
                    try {
                             s =new Socket(host ,port );
                             File fi =new File(filePath +fileName );
                             System .out.println( "文件大小:" +fi .length ());
                             FileInputStream fis =new FileInputStream(new File(filePath+fileName)) ;
                             OutputStream os =s .getOutputStream ();
                              int len;
                              byte[] buff =new byte[ 1024];
                              while((len =fis .read (buff)) >0 ){ os.write( buff0len);}
                             s .shutdownOutput ();
                              //获取服务器发来的消息。三次握手规则
                             InputStream ip =s .getInputStream ();
                              byte[] buffser =new byte[ 1024];
                             System .out.println( new String(buffser,0,ip.read( buffser)));
                              //关闭资源
                             fis .close ();
                             os .close ();
                             ip .close ();
                             s .close ();
                    } catch (Exception e ) {
                              // TODO: handle exception
                             e .printStackTrace ();
                    }
           }
 
}
//服务端部分,用了服务端继承Thread的办法
public class ServerA extends Thread {
 
           public static void main (String[] args) {
                    // TODO Auto-generated method stub
                   ServerA sa =new ServerA();
                   sa .start ();
           }
           @Override
           public void run(){
 
                    try {
                             ServerSocket ss=new ServerSocket (9527) ;
                             Socket s =ss .accept ();
                              //养成良好习惯,获取对方 ip并记录下来
                             String ip =s .getInetAddress ()getHostAddress();
                             System .out.println( ip">>>conected");
                             File file =new File(ip +".mp3" );
                              //将客户端上传的资料写到存储区
                             FileOutputStream fis =new FileOutputStream(new File("d:\\"file));
                             InputStream ips =s .getInputStream ();
                              int len;
                              byte[] buff =new byte[ 1024];
                              while((len =ips .read (buff)) !=-1 )
                                      fis .write (buff,0,len) ;
                              //通知客户端,上传成功
                             OutputStream ops =s .getOutputStream ();
                             ops .write ("成功上传"getBytes());
                              //养成随手关闭资源的习惯
                             ops .close ();
                             fis .close ();
                             ips .close ();
                             s .close ();
                    } catch (Exception e ) {
                              // TODO: handle exception
                             e .printStackTrace ();
                    }
           }
 
}
                                                         android培训、java培训、期待与您交流!  

转载于:https://www.cnblogs.com/shuawang/p/3731487.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30267785/article/details/96609539

智能推荐

Python:生成器浅见_生成器为什么节省内存-程序员宅基地

文章浏览阅读160次,点赞2次,收藏2次。Python中有些重要的概念,如生成器(generator),迭代器(iterator),装饰器(decorator),用官方的解释比较难理解,这里尝试在使用中加深对它们的认知。_生成器为什么节省内存

IDEA+EasyCode实现代码生成(傻瓜式教程)_esaycode教学-程序员宅基地

文章浏览阅读5.9k次,点赞6次,收藏15次。IDEA+EasyCode实现代码生成Easy Code介绍EasyCode是基于IntelliJ IDEA开发的代码生成插件,支持自定义任意模板(Java,html,js,xml)。只要是与数据库相关的代码都可以通过自定义模板来生成。支持数据库类型与java类型映射关系配置。支持同时生成生成多张表的代码。每张表有独立的配置信息。完全的个性化定义,规则由你设置。搭建步骤第一步:打开Inte..._esaycode教学

solidworks导出urdf教程_sw导出urde-程序员宅基地

文章浏览阅读2k次。solidworks导出urdf教程1.安装solidworks见网络教程:https://blog.csdn.net/qq_27139123/article/details/90382847?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161174106316780299043192%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&_sw导出urde

Mongodb 3.4.24 复制集构建_mongoversion v3.4.24 replication: master-程序员宅基地

文章浏览阅读522次。​​​​​​准备3个节点,我这里的IP及hostname分别是:192.168.31.164 mongodb-master192.168.31.165 mongodb-slave192.168.31.167 mongodb-arbiter版本:mongodb-linux-x86_64-rhel70-3.4.24.tgz同时节点需要完成:关闭防火墙、SSH..._mongoversion v3.4.24 replication: master

字符集ISO-8859-1_iso-8859-1字符-程序员宅基地

文章浏览阅读968次。Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。_iso-8859-1字符

CQRS思路-程序员宅基地

文章浏览阅读89次。[code="java"]http://www.cnblogs.com/netfocus/p/5184182.html[/code]_汤雪华 阿里巴巴

随便推点

机器学习与数据挖掘网上资源搜罗-程序员宅基地

文章浏览阅读291次。转自:http://blog.csdn.net/baimafujinji/article/details/50467970前面我曾经发帖推荐过网上的一些做“图像处理和计算机视觉的”有料博客资源,原帖地址图像处理与机器视觉网络资源收罗——倾心大放送http://blog.csdn.net/baimafujinji/article/details/32332079

layui的布局和表格的渲染以及动态生成表格_layui-layout-body-程序员宅基地

文章浏览阅读1.1w次。整体的效果:一、首先百度搜索layui的地址,然后下载layui的压缩包,,将压缩包的文件解压缩,然后将解压缩后的文件复制到你的编译器上;二、建立一个html文件,引入layui.css 和 layui.js两个文件,一定要将地址写对,css和js要一起引用;三、将整个页面分为三部分body标签中要引用的class为class="layui-layout-body" 3.1、头部部分:用一个大..._layui-layout-body

【汇智学堂】-Hadoop分布式集群准备工作-8(hadoop安装)_汇智学堂 hadoop分布式集群准备工作-程序员宅基地

文章浏览阅读485次。hadoop安装下载:version-hadoop2.8.5https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/Xshell,mkdir建一文件夹:/usr/hadoopcmd,pscy命令copy文件Xshellcd /usr/hadooptar -zxvf hadoop-2.8.5.t..._汇智学堂 hadoop分布式集群准备工作

oracle client 安装及卸载_win32_11gr2_client卸载-程序员宅基地

文章浏览阅读3.1k次。一、oracle client 下载与安装Oracle win32_11gR2_client.zip 百度云下载以及安装Oracle11g客户端client的下载与安装Oracle:Windows10下安装oracle client (win32_11gR2_client)安装类型oracle Instant Client,即使客户端,只有一些必须的连接数据库用的dll,没有客户端配置工具管理员,完整的客户端,有管理工具二、Oracle Client卸载Oracle Client卸载需_win32_11gr2_client卸载

Mxnet学习笔记(3)--自定义Op_mxnet customop 训练慢-程序员宅基地

文章浏览阅读4.6k次,点赞3次,收藏5次。Mxnet CustomOp_mxnet customop 训练慢

javac命令和java命令_javac 和java 执行的文件名可以不一样吗-程序员宅基地

文章浏览阅读1.1k次。1、两个命令可以大写,也可以小写,因为window平台不区分大小写。2、java源文件文件名需与public类名一致,如果文件中无public类,文件名可以是任意标识符3、javac命令编译生成的class文件,有几个类就会生成几个文件4、格式:“javac –d 生成文件的保存路径 源文件路径”,建议总是写-d后面语句,好处就是如果原文件有包,会在当前目录自动生成包文件夹,如果..._javac 和java 执行的文件名可以不一样吗

推荐文章

热门文章

相关标签