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();
}
}