Java基础知识网络编程(TCP练习)
来源:互联网 发布:如何弄死一个淘宝店铺 编辑:程序博客网 时间:2024/06/06 17:02
练习:复制文本
练习要求:把客户端的一个文件内容发到服务端,在服务端把数据存储到一个文件当中。相当于复制文件。
import java.io.*;import java.net.*;class TxtCopyTestClient{ public static void main(String[] args) throws Exception { Socket s=new Socket("192.168.1.6",10003); BufferedReader bur=new BufferedReader(new InputStreamReader(new FileInputStream("client.txt"))); //BufferedWriter buwOut=new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); PrintWriter pw=new PrintWriter(s.getOutputStream(),true); String line=null; while((line=bur.readLine())!=null) { pw.println(line); } s.shutdownOutput(); BufferedReader burIn=new BufferedReader(new InputStreamReader(s.getInputStream())); String str=burIn.readLine(); System.out.println(str); bur.close(); s.close(); }}class TxtCopyTestServer{ public static void main(String[] args) throws Exception { ServerSocket ss=new ServerSocket(10003); Socket s=ss.accept(); BufferedReader burIn=new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter pw=new PrintWriter(new FileOutputStream("server.txt"),true); String line=null; while((line=burIn.readLine())!=null) { pw.println(line); } pw.close(); PrintWriter pwOut=new PrintWriter(s.getOutputStream(),true); pwOut.println("上传成功"); s.close(); ss.close(); }}
练习2:上传图片
import java.io.*;import java.net.*;class PicClient { public static void main(String[] args) throws Exception { Socket s=new Socket("192.168.1.114",10003); FileInputStream fis=new FileInputStream("pictest.jpg"); OutputStream os=s.getOutputStream(); byte[] buf=new byte[1024]; int len=0; while((len=fis.read(buf))!=-1) { os.write(buf,0,len); } s.shutdownOutput(); InputStream is=s.getInputStream(); byte[] re=new byte[1024]; int length=is.read(re); String str=new String(re,0,length); System.out.println(str); fis.close(); s.close(); }}class PicServer{ public static void main(String[] args)throws Exception { ServerSocket ss=new ServerSocket(10003); Socket s=ss.accept(); InputStream is=s.getInputStream(); FileOutputStream fos=new FileOutputStream("serverpic.jpg"); byte[] buf=new byte[1024]; int len=0; while((len=is.read(buf))!=-1) { fos.write(buf,0,len); } OutputStream os=s.getOutputStream(); os.write("上传成功".getBytes()); s.close(); ss.close(); }}
练习3:客户端并发上传图片
import java.io.*;import java.net.*;class UploadByThreadClient{ public static void main(String[] args) throws Exception { if(args.length!=1) { System.out.println("请选择一张jpg图片"); return; } File file=new File(args[0]); if(!(file.exists()&&file.isFile())) { System.out.println("该文件有问题,要么补存在,要么不是文件"); return ; } if(!file.getName().endsWith(".jpg")) { System.out.println("图片格式错误,请重新选择"); return ; } if(file.length()>1024*1024*5) { System.out.println("文件过大,没安好心"); return ; } Socket s = new Socket("192.168.1.114",10003); FileInputStream fis = new FileInputStream("pictest.jpg"); OutputStream out = s.getOutputStream(); byte[] buf = new byte[1024]; int len = 0; while((len=fis.read(buf))!=-1) { out.write(buf,0,len); } //告诉服务端数据已写完 s.shutdownOutput(); InputStream in = s.getInputStream(); byte[] bufIn = new byte[1024]; int num = in.read(bufIn); System.out.println(new String(bufIn,0,num)); fis.close(); s.close(); }}class UploadByThreadServer{ public static void main(String[] args) throws Exception { ServerSocket ss=new ServerSocket(10003); while(true) { Socket s=ss.accept(); new Thread(new AcceptThread(s)).start(); } }}class AcceptThread implements Runnable{ private Socket s; AcceptThread(Socket s) { this.s=s; } public void run() { try { InputStream in = s.getInputStream(); String ip=s.getInetAddress().getHostAddress(); int count=1; File def=new File(ip+"("+count+")"+".jpg"); while(def.exists()) { def=new File(ip+"("+(count++)+")"+".jpg"); } FileOutputStream fos = new FileOutputStream(def); byte[] buf = new byte[1024]; int len = 0; while((len=in.read(buf))!=-1) { fos.write(buf,0,len); } OutputStream out = s.getOutputStream(); out.write("上传成功".getBytes()); fos.close(); s.close(); } catch (Exception e) { throw new RuntimeException("上传失败"); } }}
练习4:客户端并发登陆
import java.io.*;import java.net.*;class LoginClient{ public static void main(String[] args)throws Exception { Socket s=new Socket("192.168.1.6",100010); BufferedReader bur=new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw=new PrintWriter(s.getOutputStream(),true); BufferedReader burIn=new BufferedReader(new InputStreamReader(s.getInputStream())); for(int i=0;i<3;i++) { String user=bur.readLine(); if(user==null) break; pw.println(user); String info=burIn.readLine(); System.out.println("反馈信息为:"+info); if(info.contains("欢迎")) { System.out.println("登陆成功"); break; } } bur.close(); s.close(); }}class LoginServer{ public static void main(String[] args) throws Exception { ServerSocket ss=new ServerSocket(100010); while(true) { Socket s=ss.accept(); System.out.println("连接成功"); new Thread(new UserLoginThread(s)).start(); } }}class UserLoginThread implements Runnable{ private Socket s; UserLoginThread(Socket s) { this.s=s; } public void run() { try { BufferedReader burIn=new BufferedReader(new InputStreamReader(s.getInputStream())); for(int i=0;i<3;i++) { String user=burIn.readLine(); System.out.println("发送来的用户名:"+user); if(user==null) { System.out.println("为空"+user); break; } BufferedReader bur=new BufferedReader(new FileReader("user.txt")); String line=null; boolean flag=false; while((line=bur.readLine())!=null) { System.out.println("搜索到的用户名:"+line); if(line.equals(user)) { flag=true; break; } } if(flag) { PrintWriter pw=new PrintWriter(s.getOutputStream(),true); pw.println(user+"欢迎您!"); s.close(); break; } else { PrintWriter pw=new PrintWriter(s.getOutputStream(),true); pw.println("请输入正确的用户名"); } bur.close(); } s.close(); } catch (Exception e) { throw new RuntimeException("登陆失败"); } }}
0 0
- Java基础知识网络编程(TCP练习)
- Java基础-网络编程(TCP练习)
- Python网络编程socket练习(TCP)
- 网络编程练习-TCP socket
- Java网络编程(TCP)
- java网络编程(tcp)
- Java 网络编程(一) 网络基础知识
- Java 网络编程(一) 网络基础知识
- java 网络编程基础知识
- java网络编程基础知识
- java网络编程基础知识
- java网络编程基础知识
- java网络编程基础知识
- Java网络编程:基础知识
- Java基础知识:网络编程
- Java基础知识:网络编程
- Java基础知识网络编程
- Java基础知识-网络编程
- Android 长按Listview 每个item底部弹出菜单
- ASP.NET My97DatePicker日期控件实现OA日期记事功能
- Linux下安装QT之版本qt-4.6.3
- struts2 中,如何覆盖默认的错误消息
- 将rdd存储到本地的一个文件中
- Java基础知识网络编程(TCP练习)
- mysql 给指定用户指定数据库
- Web自动化系列--Selenium WebDriver详细介绍
- ReactNative NodeJs v5.7.0稳定版官方下载
- Java集合---ConcurrentHashMap原理分析
- 今天发现一个JQ插件库网站
- Activity生命周期和启动模式
- Junit 4.7 MethodRule
- mybatis 关于 传入参数为集合list和map的写法