黑马程序员---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
原创粉丝点击