黑马程序员---2015.6.28java基础笔记--网络--URL--URLConnection
来源:互联网 发布:淘宝百货用品名字大全 编辑:程序博客网 时间:2024/06/05 06:30
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1.TCP演示2,客户端给服务端发送数据,服务端收到后,给客户端反馈信息。
/*演示TCP传输TCP分为客户端和服务端客户端对应的对象是:Socket服务端对应的对象是:ServerSocket演示tcp的传输的客户端和服务端的互访。需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息。客户端:1,建立socket服务。指定要连接主机和端口。2,获取socket流中的输出流。将数据写到该流中。通过网络发送给服务端。3,获取socket流中的输入流,将服务端反馈的数据获取到,并打印。4,关闭客户端资源。*/import java.net.*;import java.io.*;class Client2{ public static void main(String[] args) throws Exception { //创建Socket服务,并指定主机,和端口号 Socket s = new Socket("192.168.1.106",10004); //为了发送数据,所以得先获取输出流 OutputStream os = s.getOutputStream(); os.write("hello world".getBytes()); //为了接受数据,所以获得输入流 InputStream is = s.getInputStream(); byte[] buf = new byte[1024]; int len = is.read(buf); System.out.println(new String(buf,0,len)); //关闭流 s.close(); }}
/*需求:定义端点接收数据并打印在控制台上。服务端:1,建立服务端的socket服务。ServerSocket(); 并监听一个端口。2,获取连接过来的客户端对象。 通过ServerSokcet的 accept方法。没有连接就会等,所以这个方法阻塞式的。3,客户端如果发过来数据,那么服务端要使用对应的客户端对象,并获取到该客户端对象的读取流来读取发过来的数据。 并打印在控制台。4,获取客户端输出流,输出数据5,关闭服务端。(可选)*/class Server2{ public static void main(String[] args) throws Exception { //建立服务端socket,并监听一个端口 ServerSocket ss = new ServerSocket(10004); //获取客户端连接过来的对象 Socket s = ss.accept(); //获取客户端对象的流,进行读取数据 InputStream is = s.getInputStream(); byte[] b = new byte[1024] ; int len = is.read(b); System.out.println(new String(b,0,len)+s.getInetAddress().getHostAddress()); //获取客户端对象输出流 OutputStream os = s.getOutputStream(); os.write("服务端已收到".getBytes()); s.close(); ss.close(); }}
2.
/*需求:建立一个文本转换服务器。客户端给服务端发送文本,服务单会将文本转成大写在返回给客户端。而且客户度可以不断的进行文本转换。当客户端输入over时,转换结束。分析:客户端:既然是操作设备上的数据,那么就可以使用io技术,并按照io的操作规律来思考。源:键盘录入。目的:网络设备,网络输出流。而且操作的是文本数据。可以选择字符流。步骤1,建立服务。2,获取键盘录入。3,将数据发给服务端。4,后去服务端返回的大写数据。5,结束,关资源。都是文本数据,可以使用字符流进行操作,同时提高效率,加入缓冲。*/import java.io.*;import java.net.*;class ClientTrans{ public static void main(String[] args) throws Exception { //创建客户端Socket Socket s = new Socket("192.168.1.106",10006); BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)); //获取Socket输出流 BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //获取Socket输入流 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); String temp = null; //键盘录入不为空 while((temp=bufr.readLine())!=null) { if("over".equals(temp)) break; //将读到了一行数据写到Socket的输出流中 bufOut.write(temp); //因为接受端是读一行数据,一行数据的结束时换行符,所以应该传一个换行符过去 bufOut.newLine(); //将缓冲区中的数据,刷出去 bufOut.flush(); System.out.println(bufIn.readLine()); } bufr.close(); s.close(); }}/* 服务器端*/class ServerTrans{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10006); Socket s = ss.accept(); //获取Socket输出流 BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); //获取Socket输入流 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); System.out.println(s.getInetAddress().getHostAddress()); String temp = null; while((temp=bufIn.readLine())!=null) { System.out.println(temp); String str = temp.toUpperCase(); bufOut.write(str); bufOut.newLine(); bufOut.flush(); } ss.close(); s.close(); }}
3.客户端上传文件到服务器端
/*客户端上传文件到服务器端, 服务器接收到返回“上传成功”*/import java.io.*;import java.net.*;class TextClient{ public static void main(String[] args) throws Exception { //创建客户端Socket Socket s = new Socket("192.168.1.106",10006); BufferedReader bufr = new BufferedReader(new FileReader("IPDemo.java")); //Socket输出流 PrintWriter pw = new PrintWriter(s.getOutputStream(),true); //Socket输入流 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); String temp = null; while((temp=bufr.readLine())!=null) { pw.println(temp); } //关闭客户端的输出流。相当于给流中加入一个结束标记-1. s.shutdownOutput(); System.out.println(bufIn.readLine()); bufr.close(); s.close(); }}/* 服务器端*/class TextServer{ public static void main(String[] args) throws Exception { ServerSocket ss = new ServerSocket(10006); Socket s = ss.accept(); //创建服务端往本地的输出流 PrintWriter pw = new PrintWriter(new FileOutputStream(new File("upload.txt")),true); //获取Socket输入流 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); //Socket输出流 PrintWriter pOut = new PrintWriter(s.getOutputStream(),true); System.out.println(s.getInetAddress().getHostAddress()); String temp = null; while((temp=bufIn.readLine())!=null) { pw.println(temp); } pOut.println("上传成功!"); pw.close(); ss.close(); s.close(); }}
4.
/*需求:上传图片。 服务器多线程接收不同客户端传送的数据 键盘输入客户端要传送的文件名,并判断。 服务器端,要是上传的文件名重复,则写新的文件名客户端。1,服务端点。2,读取客户端已有的图片数据。3,通过socket 输出流将数据发给服务端。4,读取服务端反馈信息。5,关闭。*/import java.io.*;import java.net.*;class PicClient{ public static void main(String[] args) throws Exception { Socket s = new Socket("192.168.1.106",10008); //动态输入文件名 if(args.length!=1) { System.out.println("请输入一个文件名"); return; } //判断是否符合要求 File f = new File(args[0]); if(!(f.exists() && f.isFile())) { System.out.println("请正确的文件"); return; } if(!(f.getName().endsWith(".bmp") || f.getName().endsWith(".jpg"))) { System.out.println("请输入正确的图片文件"); return; } FileInputStream fis = new FileInputStream(f); OutputStream fos = s.getOutputStream(); byte[] buf = new byte[1024]; int len = 0; while((len=fis.read(buf))!=-1) { fos.write(buf,0,len); } s.shutdownOutput(); InputStream fisIn = s.getInputStream(); byte[] buf2 = new byte[1024]; int len2 = fisIn.read(buf2); System.out.println(new String(buf2,0,len2)); s.close(); fis.close(); }}/* 服务器端利用线程*/class PicThread implements Runnable{ private Socket s = null; PicThread(Socket s) { this.s = s; } public void run() { FileOutputStream fos = null; try { String ip = s.getInetAddress().getHostAddress(); System.out.println(ip+"........connected"); InputStream is = s.getInputStream(); /* 判断文件是否存在,若是存在就"upload("+(count++)+").jpg" */ File f = new File("upload.jpg"); int count = 1; while(f.exists()) { f = new File("upload("+(count++)+").jpg"); } fos = new FileOutputStream(f); byte[] buf = new byte[1024]; int len = 0; while((len=is.read(buf))!=-1) { fos.write(buf); } OutputStream os = s.getOutputStream(); os.write("上传成功".getBytes()); s.close(); fos.close(); }catch(IOException e) { throw new RuntimeException("出错"); } }}class PicServer{ public static void main(String[] args)throws Exception { ServerSocket ss = new ServerSocket(10008); while(true) { Socket s = ss.accept(); new Thread(new PicThread(s)).start(); } //ss.close(); }}
6.URL应用
import java.net.*;class URLDemo{ public static void main(String[] args) throws MalformedURLException { URL url = new URL("http://192.168.1.254/myweb/demo.html?name=haha&age=30"); System.out.println("getProtocol() :"+url.getProtocol()); System.out.println("getHost() :"+url.getHost()); System.out.println("getPort() :"+url.getPort()); System.out.println("getPath() :"+url.getPath()); System.out.println("getFile() :"+url.getFile()); System.out.println("getQuery() :"+url.getQuery()); /*int port = getPort(); if(port==-1) port = 80; getPort()==-1 */ }}/* String getFile() 获取此 URL 的文件名。 String getHost() 获取此 URL 的主机名(如果适用)。 String getPath() 获取此 URL 的路径部分。 int getPort() 获取此 URL 的端口号。 String getProtocol() 获取此 URL 的协议名称。 String getQuery() 获取此 URL 的查询部*/
7.URLConnection连接到服务器并获取返回数据
import java.net.*;import java.io.*;class URLConnectionDemo{ public static void main(String[] args) throws Exception { URL url = new URL("http://192.168.1.254:8080/myweb/demo.html"); URLConnection conn = url.openConnection(); System.out.println(conn); InputStream in = conn.getInputStream(); byte[] buf = new byte[1024]; int len = in.read(buf); System.out.println(new String(buf,0,len)); }}
0 0
- 黑马程序员---2015.6.28java基础笔记--网络--URL--URLConnection
- 黑马程序员 java IO URL URLConnection
- 黑马程序员-----网络编程之URL和URLConnection
- 黑马程序员--基础--第三篇--URL和URLConnection认识
- JAVA笔记:Java网络编程(二)URL与URLConnection
- Java网络编程URL&URLConnection
- [疯狂Java]网络:URL、URLConnection
- 【黑马程序员】黑马入学准备篇:网络编程之 URL和URLConnection
- 黑马程序员_网络编程二(Tcp练习,URL-URLConnection,网络知识,域名解析)
- 黑马程序员_网络编程2(Tcp练习,URL-URLConnection,网络知识,域名解析)
- 黑马程序员——网络编程——服务器和URL、URLConnection对象
- 黑马程序员 Java基础学习笔记 网络编程
- 黑马程序员 JAVA基础之网络编程笔记
- Java网络编程URL与URLConnection
- Java网络编程(URL与URLConnection)
- Java 网络编程1--url 和urlconnection
- java网络编程--URL与URLConnection
- 黑马程序员_JAVA网络编程基础概念+URL类学习笔记
- ubuntu12.04安装arm-linux-gcc详解
- Java中Iterator与Iterable的区别
- 多线程编程(六)--Callable&Future
- 专注吐槽 20 年,酱油已打 200 斤, 挖坑已挖 2000 米深,就等着自己跳进去了……
- 手机用USB连接电脑宽带上网(只需轻松3步即可上网)
- 黑马程序员---2015.6.28java基础笔记--网络--URL--URLConnection
- C语言字符串拷贝
- 在win7 + vs express for desktop中安装stlport和boost库
- ubuntu12.04 minicom安装与使用
- CentOS 7.0 yum安装Apache、PHP和MySQL
- linux crypt函数
- servlet详解
- unity资源管理
- Android中Bitmap和Drawable