文档章节

TCP实现连接传输案例

o
 osc_y8yehimr
发布于 2019/03/20 18:12
字数 790
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

使用的类
    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 }

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
【计算机网络】TCP和UDP学习总结

一、TCP:传输控制协议(Transmission Control Protocol) 主要作用:把数据流分割成适当长度的报文段之后进行传输 工作机制:紧小细微型。它是面向连接的运输层协议。在使用TCP之前,应用程...

osc_nqztydej
2018/08/21
2
0
网络传输--TCP

TCP网络编程 一、TCP简介 二、TCP网络程序--客户端 三、TCP网络程序--服务端 四、TCP知识总结 五、文件下载案例 六、3次握手和4次挥手 回到顶部 一、TCP简介TCP 1.TCP的简介   TCP通信需要...

osc_9z0e3l8u
2018/11/18
0
0
TCP协议与TCP通讯

1 TCP协议 TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。 在TCP连接中必须要明确客户端与服...

osc_cd6k6fu1
2019/04/11
1
0
java基础(31):网络通信协议、UDP、TCP

网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络...

osc_0ltyoebk
2019/10/14
2
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
2019/01/17
17
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud开发人员如何解决服务冲突和实例乱窜?(IP实现方案)

点击上方“陶陶技术笔记”关注我 回复“资料”获取作者整理的大量学习资料! 一、背景 在我上一篇文章《Spring Cloud开发人员如何解决服务冲突和实例乱窜?》中提到使用服务的元数据来实现隔...

zlt2000
2019/09/06
0
0
Linux下diff命令用法详解

大家好,我是良许。 我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点。在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也有很多很强...

osc_th8jvcw7
13分钟前
0
0
万变不离其宗之UART要点总结

[导读] 单片机开发串口是应用最为广泛的通信接口,也是最为简单的通信接口之一,但是其中的一些要点你是否明了呢?来看看本人对串口的一些总结,当然这个总结并不能面面俱到,只是将个人认为...

osc_kyehmyzk
15分钟前
0
0
kafka的认识、安装与配置

认识Kafka 花费越少的精力在数据移动上,就能越专注于核心业务 --- 《Kafka:The Definitive Guide》 认识 Kafka 之前,先了解一下发布与订阅消息系统:消息的发送者不会直接把消息发送给接收...

osc_wy8nhxhn
16分钟前
0
0
使用pandas进行数据处理——DataFrame篇

  今天是pandas数据处理专题的第二篇文章,我们一起来聊聊pandas当中最重要的数据结构——DataFrame。   上一篇文章当中我们介绍了Series的用法,也提到了Series相当于一个一维的数组,只...

开源仔
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部