java c s 开发_JAVA实现C/S结构小程序

1 import java.io.*;2 importjava.net.ServerSocket;3 importjava.net.Socket;4 importjava.util.Random;5

6 public classTCPServer {7 public static void main(String[] args) throwsIOException {8

9 //method01();

10 method02();11

12 }13 public static void method02() throwsIOException{14 //1.创建一个服务器对ServerSocket对象和指定的端口号要一致.

15 ServerSocket serverSocket = new ServerSocket(8888);16 while(true) {17 //2.使用ServerSocket对象中的的方法accept,获取到请求的客户端对象Scoket18 //创建多线程,提高可以同时与多个客户端进行数据的传输,提高效率

19 Socket socket = serverSocket.accept();//阻塞(如果没有客户端连接,程序会停止在这个地方)

20 new Thread(() ->{21 try{22 //获得客户端Socket对象23 //给保存的文件设置随机名,避免覆盖

24 long time =System.currentTimeMillis();25 //3.使用Socket对象中的方法getInputSteam() 获得输入流

26 InputStream is =socket.getInputStream();27 FileOutputStream fos = new FileOutputStream(new File("C:\\123\\123", time + ".jpg"));28 byte[] list = new byte[1024];29 intlen;30 //4.使用网络字节输入流InputStream对象中的read()方法

31 while ((len = is.read(list)) != -1) {32 fos.write(list, 0, len);33 }34 fos.close();35 //5. 使用Socket对象中的getoutputStream()方法获得输出流

36 OutputStream os =socket.getOutputStream();37 //6.使用网络字节输出流OutputSteam对象中的write()方法

38 os.write("你好,图片传输完毕".getBytes());39

40 //7. 释放资源

41 socket.close();42 } catch(IOException e) {43 e.printStackTrace();44 }45 }).start();46

47 }48 }49 public static void method01() throwsIOException {50

51 //1.创建一个服务器对ServerSocket对象和系统指定的端口号要一致.

52 ServerSocket server = new ServerSocket(8888);53 /*让服务器一直处于监听状态(死循环accept方法)54 * 有一个客户端上传文件,就保存一个文件.55 **/

56 while (true){57 /*在步骤1 与 步骤2 之间会卡主, 等待客户端连接,连接了才会进行下一步*/

58

59 //2.使用ServerSocket对象中的的方法accept,获取到请求的客户端对象Scoket

60 Socket socket =server.accept();61

62

63 //3.使用Socket对象中的方法getInputSteam()64 //得到一个输入流,该输入流就可以调用read()方法

65 InputStream is =socket.getInputStream();66 //4.使用网络字节输入流InptuSteam对象中的read67

68 //文件夹 在是定文件夹下创建文件

69 File dir = new File("C:\\123\\123");70 /*//自动生成一个时间戳,自动生成文件名,利用毫秒值当做文件名71 * 用System.currentTimeMilis()方法获取当前系统的毫秒值,72 * 再加上一个随机数. 保证文件名是不重复的.73 **/

74 long time =System.currentTimeMillis();75 String filename =time+new Random().nextInt(1000)+"";76 /*如果该文件夹不存在,则生成这个文件夹*/

77 if(!dir.exists()){78 dir.mkdirs();79 }80 /**/81 FileOutputStream fos = new FileOutputStream(new File(dir,filename+".jpg"));82

83 // FileOutputStream fos = new FileOutputStream(destination);84 byte[] bs = new byte[1024];85 int len;86 while((len=is.read(bs))!=-1)87 {88 fos.write(bs,0,len);89 }90 //告诉91 fos.close();92

93

94 //5.使用Socket对象中的方法 getoutputSteam 回写 收到了就谢谢.95 //利用网络指向客户端.往客户端回写数据.96 OutputStream os = socket.getOutputStream();97 //都是字节流,转换为字节再写回去.98 os.write("收到谢谢".getBytes());99 /*socket.close();100

101 server.close();*/

102

103 }104

105

106

107 }108 }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值