第十六章 网络编程

83 阅读2分钟

16.1有名端口

Tomcat:8080

Mysql:3306

Oracle:1521

Sqlserver:1433

16.2文字传输

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

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

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

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

        ServerSocket serverSocket = new ServerSocket(9999);
        
        //监听,如果没有客户端连接,服务器阻塞...
        System.out.println("服务器在 9999端口监听,等待连接");
        Socket socket = serverSocket.accept();
        
        //获取该socket的输入流
        InputStream inputStream = socket.getInputStream();//运行类型 SocketInputStream
        
        byte[] buffer = new byte[1024];
        int len = 0;
        while((len = inputStream.read(buffer)) != -1) {
            System.out.println("服务端:收到客户端信息 " + new String(buffer, 0, len));
        }
        
        inputStream.close();
        socket.close();
        serverSocket.close();
public class Client01 {
    public static void main(String[] args) throws Exception {
        
        
        //客户端,连接服务器的 9999端口
        
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        
        //得到输出流, 字节流
        //outputStream 运行类型 是 SocketOutputStream
        OutputStream outputStream = socket.getOutputStream();
        
        outputStream.write("hello, server~".getBytes());
        
        outputStream.close();
        socket.close();
        
        
    }
}

16.3图片传输

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

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

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

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

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

public class Client04 {
    public static void main(String[] args) throws Exception {
        
        
        //客户端,连接服务器的 9999端口
        
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        
        //得到文件的输入字节流
        BufferedInputStream fileBufferedInputStream = 
                new BufferedInputStream(new FileInputStream("d:\a.jpg"));
        
        OutputStream outputStream = socket.getOutputStream();
        
        byte[] buffer = new byte[1024];
        int len = 0;
        while( (len = fileBufferedInputStream.read(buffer)) != -1) {
            //读取部分,就写入到 SocketOutputStrem
            outputStream.write(buffer, 0, len);
        }
        socket.shutdownOutput();
        
        
        //收到服务器
        InputStream inputStream = socket.getInputStream();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
        String res = bufferedReader.readLine();
        System.out.println("客户端: 收到服务器的消息 " + res);
        //关闭
        fileBufferedInputStream.close();
        outputStream.close();
        socket.close();
        
    }
}
public class Server04 {
​
    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub
        //服务端在 9999端口监听,等待客户端连接.
        
        ServerSocket serverSocket = new ServerSocket(9999);
        
        //监听,如果没有客户端连接,服务器阻塞...
        System.out.println("服务器在 9999端口监听,等待连接");
        Socket socket = serverSocket.accept();
        
        
        //先获取 SocketInputStream
        InputStream inputStream = socket.getInputStream();
        BufferedOutputStream fileBufferedOutputStream = new BufferedOutputStream(new  FileOutputStream("src\myimage.jpg"));
        
        byte[] buffer = new byte[1024];
        int len = 0;
        while( (len = inputStream.read(buffer)) != -1) {
            //边读边写
            fileBufferedOutputStream.write(buffer, 0, len);
            
        }
        
        //给客户端回复 "收到"
        OutputStream outputStream = socket.getOutputStream();
        BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
        bufferedWriter.write("哥们,收到~");
        bufferedWriter.newLine();
        bufferedWriter.flush();
        
        inputStream.close();
        fileBufferedOutputStream.close();
        socket.close();
        serverSocket.close();
        System.out.println("完成,ok~");
        
    }
​
}

16.4TCP数据传输流程

image-20200723233209578.png