TCP/IP协议实例

TCP/IP协议实例

这是我第二篇博客(不过第一篇顺序不对),加油

服务器端

package Demo;

import javax.swing.;
import java.awt.
;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**

  • ClassName ServerUi

  • Description

  • Date: 2019/12/10 0010 10:20

  • @author Administrator

  • @since JDK 1.8
    */
    public class ServerUi extends JFrame {
    private static BufferedReader br = null;//读取客户端传送的数据
    private static PrintWriter pw = null;//将服务器端的数据输出到客户端
    private static Socket s;//获取客户端Socket对象
    private static ServerSocket ss;//定义服务器端Socket对象

    private JButton jButton;//确定按钮
    private JTextField jTextField;//输入信息框
    private JTextArea jTextArea;//显示信息框

    public String stra;

    public ServerUi() {

     jTextField = new JTextField(18);
     jTextArea = new JTextArea(20, 30);
     jTextArea.setLineWrap(true);//文本换行
     jTextArea.setWrapStyleWord(true);
     jTextArea.setEditable(false);//禁止文本域编辑
     jButton = new JButton("发送");
     Container container = getContentPane();
     container.setLayout(new FlowLayout());
     container.add(jTextArea);
     container.add(jTextField);
     container.add(jButton);
     setTitle("服务器端");
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setSize(400, 420);
     setResizable(false);
     setVisible(true);
    
    
     try {
         ss = new ServerSocket(5550);
         s = ss.accept();
         jTextArea.append("服务器启动正常。。。");
    
         //pw对象,用于发送数据到客户端
         pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
         //br对象,用于读取客户端传回的数据
         br = new BufferedReader(new InputStreamReader(s.getInputStream()));
         jButton.addMouseListener(new MouseAdapter() {
             @Override
             public void mouseClicked(MouseEvent e) {
                 stra = jTextField.getText();
                 pw.println(stra);
                 pw.flush();
                 jTextArea.append("\n这里是服务器:" + stra + "\r");
                 jTextField.setText("");
             }
         });
         while (true){
             try {
                 String string = br.readLine();
                 jTextArea.append("\n客户端读到:" + string);
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }catch (Exception e){
         e.printStackTrace();
     }finally {
         try {
             br.close();
             pw.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
    

    }
    }

server调用ServerUI方法

public class Sever {
public static void main(String[] args) {
new ServerUi();
}
}

客户端

package Demo;
import javax.swing.;
import java.awt.
;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

/**

  • ClassName ClientUi

  • Description

  • Date: 2019/12/10 0010 10:21

  • @author Administrator

  • @since JDK 1.8
    */
    public class ClientUi extends JFrame {
    private JButton jButton;//确定按钮
    private JTextField jTextField;//输入信息框
    private JTextArea jTextArea;//显示信息框

    private static PrintWriter pw = null;
    private static BufferedReader br = null;

    public String stra;

    public ClientUi(){

     jTextField = new JTextField(18);
     jTextArea = new JTextArea(20,30);
     jTextArea.setLineWrap(true);//文本换行
     jTextArea.setWrapStyleWord(true);
     jTextArea.setEditable(false);//禁止文本域编辑
     jButton = new JButton("发送");
     Container container = getContentPane();
     container.setLayout(new FlowLayout());
     container.add(jTextArea);
     container.add(jTextField);
     container.add(jButton);
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setTitle("客户端");
     setSize(400,420);
     setVisible(true);
     setResizable(false);
    
     try {
         Socket s = new Socket(InetAddress.getLocalHost(),5550);
         //pw对象,用于发送数据到、服务器
         pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
         //br对象,用于读取服务器传回的数据
         br = new BufferedReader(new InputStreamReader(s.getInputStream()));
    
         jButton.addMouseListener(new MouseAdapter() {//发送数据
             @Override
             public void mouseClicked(MouseEvent e) {
                 stra = jTextField.getText();
                 pw.println(stra);
                 jTextArea.append("\n我是客户端:" + stra + "\r");
                 pw.flush();
                 jTextField.setText("");
             }
         });
    
         while (true){//读取传回的数据
             try {
                 String string = br.readLine();
                 jTextArea.append("\n服务器端读到:" + string);
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     } catch (IOException e) {
         e.printStackTrace();
     }finally {
         try {
             br.close();
             pw.close();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
    

    }
    }

客户端调用ClientUI

public class Client {
// static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
new ClientUi();
}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值