• JavaSocket简单通信


    以下介绍:简单的socket发送消息,服务的Server 相互 客户端Client,进行简单的传递消息:


    服务端代码:

    package test;
    
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Server {
        /**
         * 服务器连接的Socket
         */
        public static ServerSocket cServerSocket;
    
        /**
         * 连接 
         */
        public static Socket cSocket;
    
        /**
         * 端口 
         */
        public static final int PORT = 8888;
    
        public static void main(String[] args) {
    
            DataInputStream dis = null;
            DataOutputStream dos = null;
    
            try {
                cServerSocket = new ServerSocket(PORT);
                while (true) {
                    System.out.println("正在等待客户连接...");
                    // 这里处于等待状态,如果没有客户端连接,程序不会向下执行
                    cSocket = cServerSocket.accept();
                    dis = new DataInputStream(cSocket.getInputStream());
                    dos = new DataOutputStream(cSocket.getOutputStream());
                    // 读取数据
                    String clientStr = dis.readUTF();
    
                    String msg = "已收到信息:"+clientStr;
    
                    // 写出数据
                    dos.writeUTF(msg);
    
                    System.out.println(msg);
    
                    System.out.println("---客户端信息打印,IP:"
                                        + cSocket.getInetAddress()
                                        + " Prot:" + cSocket.getPort());
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (dis != null) {
                        dis.close();
                    }
                    if (dos != null) {
                        dos.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
    
            }
        }
    }
    

    客户端代码:

    private Socket cSocket;
    // 服务器server/IP地址(当前PC的IP地址)
    private final String ADDRESS = "192.168.8.2";
    // 服务器端口
    private final int PORT = 8888;
    cThread = new Thread() {
    @Override
    public void run() {
        super.run();
        DataInputStream dis = null;
        DataOutputStream dos = null;
        try {
            // 阻塞函数,正常连接后才会向下继续执行
            cSocket = new Socket(ADDRESS, PORT);
            dis = new DataInputStream(cSocket.getInputStream());
            dos = new DataOutputStream(cSocket.getOutputStream());
    
            // 向服务器写数据
            dos.writeUTF("hello socket...");
    
            // 读取服务器发来的数据
            cContent += dis.readUTF();
    
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (dis != null) {
                    dis.close();
                }
                if (dos != null) {
                    dos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        };  
        cThread.start();

    运行效果:
    这里写图片描述


    谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
    刘德利CSDN博客, http://blog.csdn.net/u011967006

  • 相关阅读:
    【译】使用自定义ViewHelper来简化Asp.net MVC view的开发part5(完)
    【译】使用自定义ViewHelper来简化Asp.net MVC view的开发part1
    【译】使用自定义ViewHelper来简化Asp.net MVC view的开发part3
    开发者分享在PC上制作iOS游戏的经验(上)
    dpi和ppi是什么意思
    Go语言
    逆向思维魔兽世界封包分析(2)
    关于手机游戏的部分情况调查
    《Android Dev Guide》系列教程1:什么是Android?
    拼包函数及网络封包的异常处理(含代码)
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322189.html
Copyright © 2020-2023  润新知