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() + "\n");//把文本框信息写在文本域zon
ta.setSelectionEnd(ta.getText().length());
tf.setText("");
}
});
}
private void connect(){//连接服务端
ta.append("尝试链接\n");
try {
socket = new Socket("127.0.0.1",8997);//连接本地服务器,并指定与服务器相同的端口
writer = new PrintWriter(socket.getOutputStream(),true);//打印内容到控制台
ta.append("完成连接\n");
}catch (Exception e){
e.printStackTrace();
}
}
public static void main(String[] args) {
users mm = new users("客户端");
mm.setSize(400,200);
mm.setVisible(true);
mm.connect();
}
}
浙公网安备 33010602011771号