网络编程---TCP文件上传

三块内容:

一、登陆模拟

模拟登陆,返回登录信息

LoginTwoWayClient.java
package com.sxt.loc;

import java.io.*;
import java.net.Socket;

/**
 *模拟登陆双向
 */
public class LoginTwoWayClient {
    public static void main(String[] args) throws IOException {
        System.out.println("---client---");
        BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入用户名");
        String uname = console.readLine();
        System.out.println("请输入密码");
        String upwd = console.readLine();
        //建立连接,使用Scoket创建客户端 + 服务的地址和端口
        Socket client = new Socket("localhost", 8888);
        DataOutputStream dos = new DataOutputStream(client.getOutputStream());

        dos.writeUTF("uname=" + uname + "&" + "upwd=" + upwd);
        dos.flush();


        DataInputStream dis = new DataInputStream(client.getInputStream());
        String reslut = dis.readUTF();
        System.out.println(reslut);
        dos.close();
        client.close();
    }
}
LoginTwoWayServer.java
package com.sxt.loc;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class LoginTwoWayServer {
    public static void main(String[] args) throws IOException {
        System.out.println("---Server---");

        ServerSocket server = new ServerSocket(8888);
        String uname = "";
        String upwd = "";
        Socket client = server.accept();
        System.out.println("一个客户端建立起来了---");

        DataInputStream dis = new DataInputStream(client.getInputStream());
        String datas = dis.readUTF();

        String[] dataArray = datas.split("&");
        for (String info:dataArray) {
            String[] userinfo = info.split("=");

            if (userinfo[0].equals("uname")){
                System.out.println("你的用户名是=" + userinfo[1]);
                uname = userinfo[1];
            }else if(userinfo[0].equals("upwd")){
                System.out.println("你的密码是=" + userinfo[1]);
                upwd = userinfo[1];
            }
        }
        DataOutputStream dos = new DataOutputStream(client.getOutputStream());
        if (uname.equals("123") && upwd.equals("abc")){
            dos.writeUTF("输入正确");
        }else{
            dos.writeUTF("输入错误");
        }
        dis.close();
        client.close();
    }
}

二、图片上传

FileClient.java
package com.sxt.loc;

import javax.jnlp.FileContents;
import java.io.*;
import java.net.Socket;

/**
 *模拟登陆单向
 */
public class FileClient {
    public static void main(String[] args) throws IOException {
        System.out.println("---client---");
        BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
        //建立连接,使用Scoket创建客户端 + 服务的地址和端口
        Socket client = new Socket("localhost", 8888);
        InputStream dis = new BufferedInputStream(new FileInputStream("p.jpg"));
        OutputStream dos = new BufferedOutputStream(client.getOutputStream());
        byte[] flush = new byte[1024];
        int len = -1;
        while((len = dis.read(flush))!=-1){
            dos.write(flush, 0 ,len);
        }
        dos.flush();

        dos.close();
        client.close();
    }
}
FileServer.java
package com.sxt.loc;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class FileServer {
    public static void main(String[] args) throws IOException {
        System.out.println("---Server---");

        ServerSocket server = new ServerSocket(8888);

        Socket client = server.accept();
        System.out.println("一个客户端建立起来了---");

        InputStream dis = new BufferedInputStream(client.getInputStream());
        OutputStream dos = new BufferedOutputStream(new FileOutputStream("p-1.jpg"));
        byte[] flush = new byte[1024];
        int len = -1;
        while((len = dis.read(flush))!=-1){
            dos.write(flush, 0 ,len);
        }

        dis.close();
        client.close();
    }
}

相当于拷贝图片,但是用到了TCP

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值