当前位置: 首页 > article >正文

TCP网络通信

 

 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通信
   }

}

 

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;
            }
        }


    }

}

 

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());
        }


    }

}


http://www.kler.cn/a/103857.html

相关文章:

  • linux环境执行jar脚本
  • “编辑微信小程序与后台数据交互与微信小程序wxs的使用“
  • 【Qt之QSetting】介绍及使用
  • 【从0到1设计一个网关】什么是网关?以及为什么需要自研网关?
  • 使用udevil自动挂载U盘或者USB移动硬盘
  • SpringBoot的日志系统(日志分组、文件输出、滚动归档)
  • Docker镜像仓库
  • 正点原子嵌入式linux驱动开发——Linux INPUT子系统
  • freeRTOS内部机制——栈的作用
  • HotReload For Unity的文档的导航的翻译,添加了一些自己的理解。很垃圾
  • 【德哥说库系列】-PostgreSQL跨版本升级
  • 优橙内推海南专场——5G网络优化(中高级)工程师
  • Unity 中使用波浪动画创建 UI 图像
  • Spring Cloud之声明式服务调用(Feign)
  • 【数据结构】【C语言】【环形链表约瑟夫问题】
  • 虚拟机kafka
  • 通俗介绍:什么是 Redis ?
  • Android 得到安装包的信息
  • 网络协议--IGMP:Internet组管理协议
  • Unity之ShaderGraph如何实现全息投影效果