博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TCP实现连接传输案例
阅读量:6431 次
发布时间:2019-06-23

本文共 5030 字,大约阅读时间需要 16 分钟。

使用的类

    ServerSocket 服务器端
    
    构造方法:ServerSocket(端口号); 接收端使用
    方法:accept(); 返回一个 Socket对象
    getInetAddress();返回发送端的地址 InetAddress对象
    
    Socket 客户端 发送端
    构造方法:
        Socket(IP地址,端口号);
        Socket(主机名,端口号);
    方法:
    getPort();返回端口号
    getLocalAddress();获取Socket对象绑定的本地IP地址
    getInputStream();获取一个输入对象
    getOutputStream();获取一个输出对象

1 服务器端创建: 2     import java.io.FileInputStream; 3     import java.io.IOException; 4     import java.io.InputStream; 5     import java.io.OutputStream; 6     import java.net.Socket; 7     import java.net.UnknownHostException; 8     public class TCPSERver { 9      public static void main(String[] args) throws IOException {10         ServerSocket ss=new ServerSocket(8888);11         Socket sk=ss.accept();12         InputStream is=sk.getInputStream();13         File f=new File("D:\\test\\d");14         //判断服务器相对的文件夹是否存在15         if(!f.exists())16         {17             f.mkdir();18         }19         //文件名改为域名+毫秒值+6位随机数20         String filename="zys"+System.currentTimeMillis()+new Random().nextInt(99999);21         String path=f.getAbsolutePath()+File.separator+filename+".txt";22         FileOutputStream fo=new FileOutputStream(path);23         byte[] b=new byte[1024];24         int len=0;25         while((len=is.read(b))!=-1)26         {27             fo.write(b,0,len);28         }29 30         //回复客户端31         OutputStream out=sk.getOutputStream();32         out.write("上传成功".getBytes());33         //释放34         ss.close();35         fo.close();36         37         38     }39 }
1 创建客户端: 2     import java.io.File; 3     import java.io.FileOutputStream; 4     import java.io.IOException; 5     import java.io.InputStream; 6     import java.io.OutputStream; 7     import java.net.ServerSocket; 8     import java.net.Socket; 9     import java.util.Random;10 11     public class TCPSERver {12      public static void main(String[] args) throws IOException {13         ServerSocket ss=new ServerSocket(8888);14         Socket sk=ss.accept();15         InputStream is=sk.getInputStream();16         File f=new File("D:\\test\\d");17         //判断服务器相对的文件夹是否存在18         if(!f.exists())19         {20             f.mkdir();21         }22         //文件名改为域名+毫秒值+6位随机数23         String filename="zys"+System.currentTimeMillis()+new Random().nextInt(99999);24         String path=f.getAbsolutePath()+File.separator+filename+".txt";25         FileOutputStream fo=new FileOutputStream(path);26         byte[] b=new byte[1024];27         int len=0;28         while((len=is.read(b))!=-1)29         {30             fo.write(b,0,len);31         }32 33         //回复客户端34         OutputStream out=sk.getOutputStream();35         out.write("上传成功".getBytes());36         //释放37         ss.close();38         fo.close();39         40         41     }42 }

 

1 其他案例: 2     服务器使用多线程实现多人传送文件 3     将服务器实现代码实现Runnable接口 4     重写run方法,封装到run方法中 5      6     此代码中的ServerSocket ss=new ServerSocket(8888);接收文件语句封装到实现类中 7     import java.io.IOException; 8     import java.net.ServerSocket; 9     import java.net.Socket;10 11     public class Demo1 {12         public static void main(String[] args) throws IOException {13             ServerSocket ss=new ServerSocket(8888);14             //死循环一直接受客户端15             while(true)16             {17                 Socket sk=ss.accept();18                 MyRunnable mr=new MyRunnable(sk);19                 new Thread(mr).start();20                 21             }22             23         }24     }25 26 27     import java.io.File;28     import java.io.FileOutputStream;29     import java.io.IOException;30     import java.io.InputStream;31     import java.io.OutputStream;32     import java.net.Socket;33     import java.util.Random;34 35     public class MyRunnable implements Runnable{36      private Socket sk;37     38     public MyRunnable(Socket sk)39     {40         this.sk=sk;41     }42     43     public void run() {44         FileOutputStream fo=null;45         InputStream is=null;46         try{47             is=sk.getInputStream();48             File f=new File("D:\\test\\d");49             if(!f.exists())50             {51                 f.mkdir();52             }53             //文件名改为域名+毫秒值+6位随机数54             String filename="zys"+System.currentTimeMillis()+new Random().nextInt(99999);55             String path=f.getAbsolutePath()+File.separator+filename+".txt";56             fo=new FileOutputStream(path);57             byte[] b=new byte[1024];58             int len=0;59             while((len=is.read(b))!=-1)60             {61                 fo.write(b,0,len);62             }63 64             //回复客户端65             OutputStream out=sk.getOutputStream();66             out.write("上传成功".getBytes());67             68             }catch(IOException ex){69                 ex.printStackTrace();70             }finally{71             try {72                 fo.close();73             } catch (IOException e) {74                 75                 e.printStackTrace();76             }    77         }78 79     }80     81 }

 

转载于:https://www.cnblogs.com/xiaozhang666/p/10566662.html

你可能感兴趣的文章
华为机试再回忆--第一题
查看>>
你真的了解WebSocket吗?
查看>>
网络协议复习一本通B
查看>>
Log
查看>>
微软私有云Azure Pack实践系列之一WAP的安装配置篇
查看>>
定制 LAMP 网站服务平台
查看>>
存储LUN扩容
查看>>
shell中数字计算方法(bc/expr/$(())/let/awk)
查看>>
关于CDH6的一些介绍
查看>>
bzoj 2456: mode
查看>>
无边框手机要来了!
查看>>
pstart
查看>>
我的友情链接
查看>>
修改TrustedInstaller权限文件(无法删除文件)
查看>>
windows 2008下无法改变文件(文件夹)权限时,可以看一下其所有者
查看>>
Python的系统管理_04_python_函数
查看>>
linux 修改计算机名
查看>>
在Windows Server 2008 R2中禁用 IPv6
查看>>
测试空间支持htaccess伪静态方法
查看>>
jquery特效弹出框
查看>>