TCP网络通信

TCP网络通信_第1张图片TCP网络通信_第2张图片

 TCP网络通信_第3张图片

 TCP通信的 实现发1收1

package TCP1;


 //完成TCP通信的 实现发1收1

import java.io.DataOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class Client {
    public static void main(String[] args)throws Exception {

        //1:创建Socket对象并同时请求服务端程序的链接

       Socket socket= new Socket("127.0.0.1",8888);


       //2:从Socket通信管道中得到一个字节输出流 用来数据发给到服务器
       OutputStream os= socket.getOutputStream();


        //3:把低级的输出流封装成数据输出流
       DataOutputStream dos=  new DataOutputStream(os);

       //开始写数据出去了
        dos.writeUTF("在一起好吗?");

        System.out.println("发送完成");

        dos.close();    //释放资源IO流


        socket.close();  //释放网络资源TCP通信
   }

}

 TCP网络通信_第4张图片

package TCP1;

// 完成TCP通信服务端 实现发1收1

import java.io.DataInputStream;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws Exception {

        System.out.println("===============启动服务端================");

        //1:创建serverSocket的对象 同时为服务端注册端口
     ServerSocket serverSocket = new ServerSocket(8888);


        //2:使用serverSocket 对象 调用accept 方法 等待客户端连接请求
      Socket socket= serverSocket.accept();

      //3:从socket管道中得到一个字节输入流
        InputStream inputStream = socket.getInputStream();

        //4: 把原始的字节输入流封装成输入流
      DataInputStream dis=  new DataInputStream(inputStream);



      //5:使用数据输入流 读取客户端发箍来的数据
     String rs= dis.readUTF();


        System.out.println(rs);

         // 6:谁发的数据获取IP
        System.out.println(socket.getRemoteSocketAddress());
        System.out.println(socket.getPort());


        dis.close();    //释放资源IO流


        socket.close();  //释放网络资源TCP通信
    }

}

完成TCP通信的 多发多收

package TCP2;


 //完成TCP通信的 多发多收

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    public static void main(String[] args)throws Exception {

        //1:创建Socket对象并同时请求服务端程序的链接

       Socket socket= new Socket("127.0.0.1",8888);


       //2:从Socket通信管道中得到一个字节输出流 用来数据发给到服务器
       OutputStream os= socket.getOutputStream();


        //3:把低级的输出流封装成数据输出流
       DataOutputStream dos=  new DataOutputStream(os);
        Scanner sr=new Scanner(System.in);
        while (true) {
            //开始写数据出去了
            System.out.print("请说: ");
            String msg= sr.nextLine();
            dos.writeUTF(msg);
            dos.flush();


            //用户输入exit 退出
            if ("exit".equals(msg)){
                System.out.println("欢迎下次光临 退出成功");
                dos.close();
                socket.close();
                break;
            }
        }


    }

}

TCP网络通信_第5张图片 

package TCP2;

// 完成TCP通信服务端  多发多收

import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws Exception {

        System.out.println("===============服务端启动成功================");

        //1:创建serverSocket的对象 同时为服务端注册端口
     ServerSocket serverSocket = new ServerSocket(8888);


        //2:使用serverSocket 对象 调用accept 方法 等待客户端连接请求
      Socket socket= serverSocket.accept();

      //3:从socket管道中得到一个字节输入流
        InputStream inputStream = socket.getInputStream();

        //4: 把原始的字节输入流封装成输入流
      DataInputStream dis=  new DataInputStream(inputStream);


        while (true) {
            //5:使用数据输入流 读取客户端发箍来的数据
            try {
                String rs= dis.readUTF();

                System.out.println(rs);
            } catch (Exception e) {
                System.out.println(socket.getRemoteSocketAddress()+"离线了!");
                socket.close();
                dis.close();
                break;
            }

            // 6:谁发的数据获取IP
           // System.out.println(socket.getRemoteSocketAddress());
           //System.out.println(socket.getPort());
        }


    }

}

你可能感兴趣的:(tcp/ip,网络,服务器)