网络编程-Socket通信实现服务器与客户端互传文件(JAVA语言实现)

本文介绍了使用Java的Socket通信实现服务器与客户端间文件的互传。详细讲解了网络编程三要素:IP地址、端口和协议,并对比了UDP与TCP协议的特点。通过示例代码展示了如何实现客户端向服务器发送文件、服务器向客户端发送文件、客户端多次发送文件及双方互传文件的过程。
摘要由CSDN通过智能技术生成

网络编程-Socket通信实现服务器与客户端互传文件(JAVA语言实现)

在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换.

网络编程三要素:ip地址、端口、协议

ip地址:

每台计算机指定的一个标识符,127.0.0.1是回送地址,可以代表本机地址 ,一般用来测试使用

ipconfig:命令行中查看本机地址

ping ip地址:检查网络是否连通

端口

两个应用程序的通信。IP地址是可以唯一标识网络中的设备,端口就是可以唯一标识设备中的应用程序。

端口号:用两个字节表示的整数,它的取值范围是0-65535.其中0-1023之间的端口号用于一些知名的网络服务和应用,普遍的应用程序要使用1024以上。

协议:

连接和通信的规则称为网络的通信协议.

常见的协议UDP和tcp

UDP:用户数据报协议.

无连接的通信协议,即使在传输数据的时候,发送端和接收端不建立连接.

消耗资源小,通信效率高.

UDP适用于音频,视频和普通数据的传输.

TCP:传输控制协议

是面向连接的同学,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据.

两台计算机无差错的数据传授.

需要经过三次握手,四次挥手

三次握手:

  • 客户端向服务器端发出连接请求,等待服务确认

  • 服务器端向客户端回送一个响应,通知客户端收到了连接请求

  • 客户端再次向服务器端发送确认信息,确认连接

TCP是可以保证数据的安全的传输,上传文件,下载文件等等

Socket实现客户端向服务器发送文件

在这里插入图片描述

在这里插入图片描述

先运行服务器,再运行客户端部分的代码。

serverDemo02.java

package demo02;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo02 {
   
    public static void main(String[] args) throws Exception{
   
        //创建服务
        ServerSocket serverSocket = new ServerSocket(9000);
        //监听客户端连接

        Socket socket = serverSocket.accept();//阻塞式监听会一直等待客户端连接
        //获取输入流
        InputStream is = socket.getInputStream();

        //文件输出
        File file=new File("E:/receive3.jpg");//接收文件地址
        FileOutputStream fos = new FileOutputStream(file);
        byte[] buffer = new byte[1024];
        int len;
        while ((len = is.read(buffer)) != -1) {
   

            fos.write(buffer,0,len);
        }//关闭资源
        fos.close();
        is.close();
        socket.close();
        serverSocket.close();
    }
}

clientDemo02.java

package  demo02;

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

public class clientDemo02 {
   
    public static void main(String[] args) 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值