• TCP通信,客户端数据上传服务器


    1.TCP通信:服务器端:ServerSocket;客户端主动连接服务器端(通过IO流传输数据);客户端:Socket:获取InputStream和OutputStream对象,获取对象后进行传输:
    2.客户端:1.创建客户端对象:Socket socket=new Socket("127.0.0.1",6666);
    3.通过Socket对象创建输出流对象:OutputStream out=socket.getOutputStream();
    4.写要传输的内容:out.write("你好".getbytes())
    5.接收服务器返回的数据:创建数据接收流对象:InputStream in=socket.getInputStream()
    6.创建接收数据用的byte数组:byte[] bytes=new char[1024];7.创建ch的长度:int len=in.read(bytes);
    8.接收数据并打印system.out.println(内容是:+new String(bytes,0,len));
    9.释放资源:socket.close();
    10.服务器端:
    1.创建服务器对象:ServerSocket server=new ServerSocket(6666);
    2.创建客户端接收对象:Socket socket=server.accrpt();
    3.创建字节输入流:InputStream in=socket.getInputStream();
    4.创建接收的byte数组:byte[] bytes=new byte[1024];
    5.创建接收数据的byte数组长度:int len=in.read(bytes); 得到客户端ip:String ip=socket.getInetAddress().getHostAddress()
    6.打印接收数据:system.out.println(ip地址:+ip+内容+new String(bytes,0,len));
    7.回复客户端:1.创建字节输出流:OutputStream out=socket.getOutputStream();
    2.写返回数据:out.writer("你好".getbytes); 3.释放资源:server.close();
    循环打印:
    1.客户端: Socket socket=new Socket("127.0.0.1",6666); OutputStream out=socket.getOutputStream(); Inputstream in=socket.getInputStream();
    Scanner sc=new Scanner(System.in);whlie(true){ out.writer(sc.next().getbytes);byte[] bytes=new byte[1024];int len=id.read(bytes);system.out.println
    (newString(bytes,0,len))}
    2.服务器端:ServerSocket server=new ServerSocket(6666); Socket socket=new Socket();InputStream in=socket.getInputStream();Scanner sc=new Scanner(System.in)
    byte[] bytes=new byte[1024];whlie(true){ int len=in.read(bytes);String ip=socket.getInertAddress().getHostAddress();system.out.println(ip+new String (bytes,0,len)) OutputStream out=socket.getOutputStream();out.writer(sc.next().getbytes)};
    3.正常客户端:Socket socket=new Socket("127.0.0.1",6666); OutputStream out=socket.getOutputStream(); out.wtiter("你好".getbytes);
    InputStream in=socket.getInputStream(); byte[] bytes=new byte[1024]; int len=in.read(bytes);system.out.println(new String(bytes,0,len));socket.close();
    4.正常服务器端:ServerSocket server=new ServerSocket(6666); Socket socket=server.accept();InputStream in=socket.getInputStream();
    byte[] bytes=new byte[1024]; int len=in.read(bytes);String ip=socket.getInetAddress().getHostAddress();system.out.println(ip+new String(bytes,0,len))
    OutputStream out=socket.getOutputStream(); out.writer("你好".getbytes());server.close();
    5.文件上传服务器
    客户端:1.创建客户端对象:Socket socket=new Socket("127.0.0.1",6666); 2.创建字节输出流:OutputStream out=socket.getOutputStream();
    3.创建字节读入流:FileInputStream fis=new FileInputStream("F:\demo0611\t.txt"); 4.开始传:int len=0;byte[]w bytes=new byte[1024];while((len=fis.read(bytes))!=- 1){out.write(bytes,0,len)}//给服务器一个出口 socket.shutdownOutput();//接收服务器返回值:InputStream in=socket.getInputStream(); int len=in.read(bytes);
    system.out.println(new String(bytes,0,len));socket.close;fis.close;
    6.服务器端:1.创建服务器对象:ServerSocket server=new ServerSocket(6666);2.客户端:Socket socket=server.accept();3.创建字节输出流:InputStream in=socket.getInputStream(); 4.创建file地址:File file=new File("F:\upload");判断是否存在改文件夹没有就创建:if(!file.exists()){file.mkdirs()};
    6.创建文件名:String filename=System.currentTimeMillis()+new Random().nextInt(1000)+".txt";创建字节输出流:FileOutputStream fos=new FileOutputStream();
    7.开始复制:int len=0; byte[] bytes=new byte[1024];while((len=in.read(bytes))!=-1){fos.write(bytes,0,len)};
    8.给客户端回复:1.创建字节输出流:OutputStream out=socket.getOutputStream();2.输出字符:out.write("上传成功".getbytes); server.close();fos.close();
    多线程服务器:private SocketServer server; public Upload(){} public Upload(ServerSocket server){this.server=server;};public void run(){
    ServerSoscket server=null;FileOutputStream pos=null;while(true){ Socket socket=new Socket(); InputStream in=socket.getInputStream(); File file=new File("")
    if(!file.exists()){file.mkdirs();} int len=0;byte[] bytes=new byte[1024]; String filename=system.currentTimeMillis()+new Random().nextInt(1000)+".txt";
    fos=new FileOutputStream(file+file.separator+filename);while((len=in.read(bytes)!=-1){ fos.write(bytes,0,len)};OutputStream out=socket.getOutputStream();
    out.write("n".getbytes());server.close; fos.close(); ServerSocket socket=new ServerSocket(6666);Upload uo=new Upload(server);while(true){new Thread(uo).start ()}

  • 相关阅读:
    Iterator与 Enumeration
    多态性理解
    django---路由层
    django常用模块汇总
    django初识
    python常见模块
    python PEP8规范
    logging模块
    mysql一些了解的名词
    python 链接 mysql数据库
  • 原文地址:https://www.cnblogs.com/hankai2735/p/11481896.html
Copyright © 2020-2023  润新知