服务器
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();
}
}
执行效果: