zoukankan      html  css  js  c++  java
  • 最简单的TCP程序

      网络编程里面最简单的一个tcp程序,把一个文件从客户端上传到服务器端,上传成功后服务器端提示上传完成。代码不多,一个服务端和一个客户端。
      服务端代码:

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ServerDemo {
        public static void main(String[] args) throws IOException {
            // 创建服务端Socket对象
            ServerSocket ss = new ServerSocket(1299);
            // 监听客户端tcp连接
            Socket s = ss.accept();
            //定义输入流以读取客户端上传文件
            InputStream is = s.getInputStream();
            //创建文件字节流输出对象,将读入的字节流写入文件
            FileOutputStream fos = new FileOutputStream("F:\UUcall.exe");
            byte[] bys = new byte[1024];
            int length = 0;
            while ((length = is.read(bys)) != -1) {
                fos.write(bys, 0, length);
            }
            //禁用套接字输入流
            s.shutdownInput();
            //创建套接字输出流,向客户端发送消息
            OutputStream os = s.getOutputStream();
            //提示客户端文件上传成功
            os.write("Upload successfully.".getBytes());
            fos.close();
            s.close();
        }
    }

      客户端代码:

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class ClientDemo {
        public static void main(String[] args) throws IOException{
            //创建客户端Socket对象,并指定服务器地址及端口号
            Socket s = new Socket("127.0.0.1",1299);
            //调用getOutputStream()方法产生输出流对象
            OutputStream os = s.getOutputStream();
            //创建本地文件字节流对象,模拟文件上传操作
            FileInputStream fis = new FileInputStream(new File("D:\UUcall.exe"));
            //定义字节数组,每读取2048字节写一次
            byte[] bys = new byte[2048];
            //记录每次实际读取长度
            int length = 0;
            while ((length = fis.read(bys))!=-1) {
                os.write(bys,0,length);
            }
            //禁用Socket对象的输出流
            s.shutdownOutput();
            //获取Socket对象的输入流以读取服务器回送消息
            InputStream is = s.getInputStream();
            byte[] msg = new byte[1024];
            int len = is.read(msg);
            String string = new String(msg,0,len);
            System.out.println(string);
            //关闭文件字节流对象
            fis.close();
            //关闭此套接字对象
            s.close();
        }
    }
  • 相关阅读:
    Hyper-V自定义专用网络网段
    mongodb导入,导出实例
    kafka介绍二 快速开始
    常用代理IP服务商
    kafka介绍一
    链接汇总
    心态,决定你的人生
    hibernate入门(三)hibernate的三种状态解析
    hibernate入门(二)一级缓存和三种状态解析
    css动画之颤动的动画
  • 原文地址:https://www.cnblogs.com/magics/p/3659741.html
Copyright © 2011-2022 走看看