第十六章 网络编程

16.1有名端口

Tomcat:8080

Mysql:3306

Oracle:1521

Sqlserver:1433


16.2文字传输

1.编写一个服务器端, 和一个客户端

2.服务器端在 9999端口监听

3.客户端连接到服务器端,发送 “hello, server” , 然后退出

4.服务器端接收到 客户端发送的 信息,输出,并退出

        ServerSocketserverSocket=newServerSocket(9999);


        //监听,如果没有客户端连接,服务器阻塞...

        System.out.println("服务器在 9999端口监听,等待连接");

        Socketsocket=serverSocket.accept();


        //获取该socket的输入流

        InputStreaminputStream=socket.getInputStream();//运行类型 SocketInputStream


        byte[]buffer=newbyte[1024];

        intlen=0;

        while((len=inputStream.read(buffer))!=-1) {

            System.out.println("服务端:收到客户端信息 "+newString(buffer,0,len));

        }


        inputStream.close();

        socket.close();

        serverSocket.close();

publicclassClient01{

    publicstaticvoidmain(String[]args)throwsException{



        //客户端,连接服务器的 9999端口


        Socketsocket=newSocket(InetAddress.getLocalHost(),9999);


        //得到输出流, 字节流

        //outputStream 运行类型 是 SocketOutputStream

        OutputStreamoutputStream=socket.getOutputStream();


        outputStream.write("hello, server~".getBytes());


        outputStream.close();

        socket.close();



    }

}


16.3图片传输

1.编写一个服务器端, 和一个客户端

2.服务器端在 9999端口监听

3.客户端连接到服务器端,发送 一张图片

4.服务器端接收到 客户端发送的 图片,保存到 src下, 发送 “收到” 再退出

5.客户端接收到服务器端发送的 “收到”, 再退出

publicclassClient04{

    publicstaticvoidmain(String[]args)throwsException{



        //客户端,连接服务器的 9999端口


        Socketsocket=newSocket(InetAddress.getLocalHost(),9999);


        //得到文件的输入字节流

        BufferedInputStreamfileBufferedInputStream=

                newBufferedInputStream(newFileInputStream("d:\\a.jpg"));


        OutputStreamoutputStream=socket.getOutputStream();


        byte[]buffer=newbyte[1024];

        intlen=0;

        while( (len=fileBufferedInputStream.read(buffer))!=-1) {

            //读取部分,就写入到 SocketOutputStrem

            outputStream.write(buffer,0,len);

        }

        socket.shutdownOutput();



        //收到服务器

        InputStreaminputStream=socket.getInputStream();

        BufferedReaderbufferedReader=newBufferedReader(newInputStreamReader(inputStream));

        Stringres=bufferedReader.readLine();

        System.out.println("客户端: 收到服务器的消息 "+res);

        //关闭

        fileBufferedInputStream.close();

        outputStream.close();

        socket.close();


    }

}

publicclassServer04{

    publicstaticvoidmain(String[]args)throwsException{

        // TODO Auto-generated method stub

        //服务端在 9999端口监听,等待客户端连接.


        ServerSocketserverSocket=newServerSocket(9999);


        //监听,如果没有客户端连接,服务器阻塞...

        System.out.println("服务器在 9999端口监听,等待连接");

        Socketsocket=serverSocket.accept();



        //先获取 SocketInputStream

        InputStreaminputStream=socket.getInputStream();

        BufferedOutputStreamfileBufferedOutputStream=newBufferedOutputStream(newFileOutputStream("src\\myimage.jpg"));


        byte[]buffer=newbyte[1024];

        intlen=0;

        while( (len=inputStream.read(buffer))!=-1) {

            //边读边写

            fileBufferedOutputStream.write(buffer,0,len);


        }


        //给客户端回复 "收到"

        OutputStreamoutputStream=socket.getOutputStream();

        BufferedWriterbufferedWriter=newBufferedWriter(newOutputStreamWriter(outputStream));

        bufferedWriter.write("哥们,收到~");

        bufferedWriter.newLine();

        bufferedWriter.flush();


        inputStream.close();

        fileBufferedOutputStream.close();

        socket.close();

        serverSocket.close();

        System.out.println("完成,ok~");


    }

}


16.4TCP数据传输流程

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容