• TCP客户端&TCP服务端


    注:TCP之间的通信不同于UDP之间的通信,TCP之间的通信是通过socket IO流来实现的。

    UDP是通过发送(send)和接收(receive)数据包来 完成通信的。

    TCP客户端:

    import java.io.IOException;
    import java.io.OutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    public class TcpClientDemo {
    
        public static void main(String[] args) throws UnknownHostException, IOException {
            
            /*
             * tcp客户端的建立
             * 思路:
             * 1.建立tcp客户端服务
             *     1.1因为是面向连接的,必须有连接才可以进行通信
             *     1.2在创建客户端时,就必须 明确目的的地址和端口。
             * 2.一旦连接建立,就有了传输数据的通道。就可以在通道中进行数据传输
             *     这个传输其实就是通过流实现的。这个流就是Socket IO流
             * 3.只要获取socket io中的写动作就可以把数据写到socket流中发给服务端。
             * 4.关闭资源
             */
            
            System.out.println("客户端启动.......");
            
            //1.创建客户端对象,明确目的地址和端口。
            Socket s = new Socket("192.168.17.1",10003);
            
            //2.获取socket流中的输出流,将数据发送给服务端
            OutputStream out = s.getOutputStream();
            
            //3.通过输出流写数据
            out.write("又要注意啦..tcp来了".getBytes());
            
            //4.关闭资源
            s.close();
            
        }
    
    }

    TCP服务端:

    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class TcpServerDemo {
    
        public static void main(String[] args) throws Exception {
    
            /*
             * 创建tcp服务器端
             * 思路:
             * 1.创建socket服务器端服务。服务器端为了让客户端可以连接上,必须提供端口,监听一个端口
             * 2.获取客户端对象,通过客户端的socket流和对应的客户端进行通信
             * 3.获得客户端的socket流的读取流。
             * 4.读取数据并显示在服务器端
             * 5.关闭资源
             */
            
            System.out.println("服务器端启动......");
            
            //1.创建服务器端对象
            ServerSocket ss = new ServerSocket(10003);
            
            //2.获取客户端对象
            Socket s = ss.accept();//阻塞式
            String ip = s.getInetAddress().getHostAddress();
            System.out.println(ip+"...connected");
            
            //3.通过客户端对象获取socket流的读取里
            InputStream in = s.getInputStream();
            
            byte[] buf = new byte[1024];
            int len = in.read(buf);
            String str = new String(buf,0,len);
            
            System.out.println(str);
            
            s.close();//先把客户端关掉,要不然服务端连接过多的客户端后会死机
            ss.close();
            
        }
    
    }
  • 相关阅读:
    empty()与remove([expr])的区别.转
    ThinkPHP验证码刷新随机数
    ThinkPHP的cookide保存二维数组的方法
    ThinkPHP 关联模型中查询某条记录的父级(非查询子级)
    DWZ的选择带回功能无法带回第一个value中的值
    IS_POST:判断是否存在POST提交
    ThinkPHP中Xheditor编辑器报错
    一台电脑安装两个xampp的方法
    ajax中文传送到模板显示为null
    【MySQL】MySQL事务回滚脚本
  • 原文地址:https://www.cnblogs.com/qjlbky/p/5931355.html
Copyright © 2020-2023  润新知