java 实现 socket TCP 编程

服务器

package com.js;
import java.io.*;// 导入Java.io 包
import java.net.*;// 导入 java.net 包

public class Java_5_Socket_TCP {// 创建类 Java_5_Socket_TCP
    private BufferedReader reader; // 创建 BufferedReader 对象
    private ServerSocket server;// 创建ServerSocket 对象
    private Socket socket;// 创建Socket 对象 socket 

    void getserver(){
        try{
            server = new ServerSocket(8998);// 实例化 Socket 对象
            System.out.println("服务器套接字已经创建成功");// 输出信息
            while(true){// 如果套接字是连接状态
                System.out.println("等待客户机的连接");// 输出信息
                socket = server.accept();// 实例化 Socket 对象
                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) {
        // TODO 自动生成的方法存根
        Java_5_Socket_TCP tcp = new Java_5_Socket_TCP();
        tcp.getserver();
    }

}

客户端:

package com.js;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
public class Java_5_Socket_TCP_client extends JFrame{
    private PrintWriter writer;// 创建 PrintWriter 类对象
    Socket socket;//声明 Socket 对象
    private JTextArea ta = new JTextArea();// 创建 JTextArea 对象
    private JTextField tf = new JTextField();// 创建 JTextField 对象
    Container cc;// 声明 Container 对象
    public Java_5_Socket_TCP_client(String title){// 构造方法
        super(title);// 调用父类的构造方法

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        cc = this.getContentPane();// 实例化对象
        final JScrollPane scrollPane = new JScrollPane();
        scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));
        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()+'\n');
                ta.setSelectionEnd(ta.getText().length());
                tf.setText("");

            }
        });
    }
    private void connect(){
        ta.append("尝试连接\n");
        try{
            socket = new Socket("127.0.0.1",8998);
            writer = new PrintWriter(socket.getOutputStream(),true);
            ta.append("完成连接\n");

        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Java_5_Socket_TCP_client client = new Java_5_Socket_TCP_client("向服务器送数据");
        client.setSize(200,200);
        client.setVisible(true);
        client.connect();
    }

}

执行效果:

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值