tcp实现连接传输案例(代码片段)

xiaozhang666 xiaozhang666     2023-03-09     791

关键词:

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

 

网络传输--tcp(代码片段)

...链接,数据传送,终止链接3个步骤  2.TCP的特点  面向连接:建立间接,通信,关闭连接.这种连接方式是一对一的,所以不支持广播模式  可靠传输    应答机制:TCP发送的报 查看详情

javawebudp/tcp简单实现汉译英服务器与客户端(代码片段)

@TOCTCP与UDP的区别有连接与无连接可以怎么去理解?有链接:像打电话无连接:发微信注:TCP,就是要求双发先建立连接,连接好了,才能进行传数据。UDP,直接传输数据,不需要双方建立连接面向字节流与数据报面向字节流:... 查看详情

node网络编程(代码片段)

目录网络编程Node实现TCP协议TCP协议Net模块提供的APInet.Server类net.Socket类Node实现UDP协议Node实现HTTP协议网络编程Node实现TCP协议TCP协议TCP协议:传输控制协议,提供面向连接的、可靠的数据传输服务(三次握手四次挥手&#... 查看详情

python网络编程—socket套接字编程(tcp)(代码片段)

套接字介绍1.套接字:实现网络编程进行数据传输的一种技术手段2.Python实现套接字编程:importsocket3.套接字分类流式套接字(SOCK_STREAM):以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字)数据... 查看详情

笔记传输层tcp/udp(代码片段)

...的数据连接(端,就是端口的端)TCPUDP5-会话层(系统内部实现机制,数据包中无法体现出来)6-表示层(系统内部实现机制,数据包中无法体现出来)7-应用层==================================================seq:sequencenumber,序列号;acknowledge... 查看详情

网络编程socket网络编程(代码片段)

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

java通过socket实现tcp编程(代码片段)

...的功能,用户数据报协议(UDP,下一篇博客会实现)是同一层 查看详情

tcp协议与tcp通信(代码片段)

...时必须采用TCP协议。2TCP通信TCP通信同UDP通信一样,都能实现两台计算机之间的通信,通信的两端都需要创建socket对象。在JDK中提供了两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个是Socket类,用于表示客... 查看详情

tcp网络协议的三次握手及代码释义(代码片段)

...定的规定,并且只有通讯双方同时遵守了这些规定,才能够实现数据的相互传输.而这些规定,便是由网络通讯协议针对数据传输格式,传输速率,传输步骤等制定的.2、网络协议分类java.net包中包含的类和接口,它们提供低层次的通信... 查看详情

计算机网络-5-传输层(代码片段)

...特点&TCP报文段格式3.1TCP协议的特点3.2TCP报文格式4.TCP连接管理4.1TCP的连接建立(三次握手)4.2TCP的连接释放(四次挥手)5.TCP可靠传输5.1TCP可靠 查看详情

node.js网络编程(下)实现tcpudpwebsocket的创建(代码片段)

...模块创建UDP服务器和客户端WebSocket服务器与客户端WebSocket实现机制WebSocket构建实时聊天室TCP服务器与客户端TCP基础TCP协议:传输控制协议,提供面向连接的、可靠的数据传输服务面向连接:数据传输之前, 查看详情

面试官:说说tcp如何实现可靠传输(代码片段)

...你是否有一个总结的能力。我们从三个部分来讲TCP是如何实现可靠传输的。滑动窗口首先是讲TCP中的滑动窗口,它和TCP的可靠传输息息相关。TCP的滑动窗口是以字节为单位的,假设现在发送端收到了接收端发送过来的确... 查看详情

网络编程案例多任务版tcp服务端程序开发(代码片段)

...端程序开发案例-多任务版TCP服务端程序开发1.需求2.具体实现步骤3.多任务版TCP服务端程序的示例代码4.小结模拟QQ聊天-客户端模拟QQ聊天-服务端案例-多任务版TCP服务端程序开发学习目标能够说出多任务版TCP服务端程序的实现过... 查看详情

王道计算机网络传输层(代码片段)

...机网络传输层1、传输层1.1、传输层的两个协议1.1.1、面向连接的传输控制协议TCP1.1.2、无连接的用户数据报协议UDP1.2、传输层的寻址与端口1.3、UDP协议1.3.1、UDP首部格式1.3.2、UDP校验1.4、TCP协议1.4.1、TCP报文段首部格式1.5、TCP连接... 查看详情

王道计算机网络传输层(代码片段)

...机网络传输层1、传输层1.1、传输层的两个协议1.1.1、面向连接的传输控制协议TCP1.1.2、无连接的用户数据报协议UDP1.2、传输层的寻址与端口1.3、UDP协议1.3.1、UDP首部格式1.3.2、UDP校验1.4、TCP协议1.4.1、TCP报文段首部格式1.5、TCP连接... 查看详情

监控案例之监控tcp连接数(代码片段)

五、监控案例之监控TCP1、安装agent,过程略(下面是apt安装,如果是编译安装,请注意路径)2、监控脚本cd/etc/zabbix/zabbix_agentd.conf.d/vimcheck_tcp.sh#!/bin/bashtcp_conn_status()TCP_STAT=$1ss-ant|awk‘NR>1++s[$1]ENDfor(kins)printk,s[k]‘>/tmp/tcp_conn.txtTC... 查看详情

字节一面:如何用udp实现可靠传输?(代码片段)

...;有位读者字节一面的时候被问到:「如何基于UDP协议实现可靠传输?」很多同学第一反应就会说把TCP可靠传输的特性(序列号、确认应答、超时重传、流量控制、拥塞控制)在应用层实现一遍。实现的思路确实这... 查看详情

传输层——tcp(详解三路握手与四次挥手)(代码片段)

...一、TCP协议1.TCP协议概述2.TCP协议要点3.TCP报文结构4.面向连接——三路握手5.断开连接——四次挥手二、TCP为什么是可靠传输1.数据编号与积累确认2.超时重传3.滑动窗口4.流量控制5.拥塞控制一、TCP协议1.TCP协议概述  TCP协议与... 查看详情