zoukankan      html  css  js  c++  java
  • Java tcp服务端与客户端简单案例

    服务段

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class Main {
        private BufferedReader reader;//
        private ServerSocket server;//
        private Socket socket;//套接字
        void getServer(){//此方法完成服务端的各种必要链接
            try {
                server = new ServerSocket(8997);//实例化Socket对象,并给他个8997端口
                System.out.println("服务器套接字创建成功");
                while (true){
                    System.out.println("等待客户端连接");
                    socket = server.accept();
                    reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));//实例化BufferedReader对象
                    getClientMessage();//调用getClientMessage方法
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        private void getClientMessage(){//此方法持续收听客户端信息
            try {
                while (true){
                    System.out.println("客户机:" + reader.readLine());//获取客户端信息
                }
            }catch (Exception e){
                e.printStackTrace();
            }
    
            try {
                if (reader != null){
                    reader.close();//关闭流
                }
                if (socket != null){
                    socket.close();//关闭套接字
                }
            }catch (IOException e){
                e.printStackTrace();
            }
    
        }
        public static void main(String[] args) {
        // write your code here
            Main ma = new Main();
            ma.getServer();
        }
    }

    客户端

    package com.company;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.PrintWriter;
    import java.net.Socket;
    
    public class users extends JFrame {
        private PrintWriter writer;
        Socket socket;//创建字节套对象
        private JTextArea ta = new JTextArea();
        private JTextField tf = new JTextField();
        Container cc;
        public users(String title){//设置jframe窗体,不是特别重要
            super(title);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            cc = this.getContentPane();
            final JScrollPane scrollPane = new JScrollPane();
            getContentPane().add(scrollPane,BorderLayout.CENTER);
            scrollPane.setViewportView(ta);
            cc.add(tf,"South");
    
    
            tf.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    writer.println(tf.getText());//写入流,服务器那边是读取流
                    ta.append(tf.getText() + "
    ");//把文本框信息写在文本域zon
                    ta.setSelectionEnd(ta.getText().length());
                    tf.setText("");
                }
            });
        }
        private void connect(){//连接服务端
            ta.append("尝试链接
    ");
            try {
                socket = new Socket("127.0.0.1",8997);//连接本地服务器,并指定与服务器相同的端口
                writer = new PrintWriter(socket.getOutputStream(),true);//打印内容到控制台
                ta.append("完成连接
    ");
    
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
            users mm = new users("客户端");
            mm.setSize(400,200);
            mm.setVisible(true);
            mm.connect();
        }
    }
    
  • 相关阅读:
    TCP源码—连接建立
    TCP系列02—连接管理—1、三次握手与四次挥手
    TCP系列01—概述及协议头格式
    ubuntu软件管理apt与dpkg
    318. Maximum Product of Word Lengths
    317. Shortest Distance from All Buildings
    316. Remove Duplicate Letters
    315. Count of Smaller Numbers After Self
    314. Binary Tree Vertical Order Traversal
    313. Super Ugly Number
  • 原文地址:https://www.cnblogs.com/wandn/p/15108150.html
Copyright © 2011-2022 走看看