package tcp;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GraphicsConfiguration;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
/*
* 客户端程序,实现将用户在文本框中输入的信息发送至服务器端,并将文本框中输入的信息显示在客户端的文本域中
*/
public class MyClient extends JFrame{
//声明PrintWriter类对象
private PrintWriter writer;
//声明Socket对象
Socket socket;
//声明文本域对象
private JTextArea ta=new JTextArea();
//声明文本框组件对象
private JTextField jf=new JTextField();
//声明Container对象
Container cc;
//声明构造方法
public MyClient(String title) {
//调用父类的构造方法
super(title);
//设置窗体关闭方式
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//实例化对象
cc=this.getContentPane();
//创建JScrollPane面板
final JScrollPane scrollPane=new JScrollPane();
scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));
getContentPane().add(scrollPane,BorderLayout.CENTER);
scrollPane.setViewportView(ta);
//将文本框放在窗体下部
cc.add(jf,"South");
jf.addActionListener(new ActionListener() {
//绑定事件
@Override
public void actionPerformed(ActionEvent e) {
//将文本框中的数据写入流
writer.println(jf.getText());
//将文本框中的信息显示在文本域中
ta.append(jf.getText()+'\n');
ta.setSelectionEnd(ta.getText().length());
jf.setText("");//将文本框清空
}
});
}
//连接套接字方法
private void connect() {
//文本域中提示信息
ta.append("尝试连接\n");
try {//捕捉异常
//实例化Socket对象
socket=new Socket("192.168.0.107",8080);
writer=new PrintWriter(socket.getOutputStream(),true);
//文本域中提示信息
ta.append("完成连接\n");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//创建本实例对象
MyClient client=new MyClient("向服务器送数据");
//设置窗体大小
client.setSize(200,200);
//将窗体显示
client.setVisible(true);
//调用连接方法
client.connect();
}
}
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.GraphicsConfiguration;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
/*
* 客户端程序,实现将用户在文本框中输入的信息发送至服务器端,并将文本框中输入的信息显示在客户端的文本域中
*/
public class MyClient extends JFrame{
//声明PrintWriter类对象
private PrintWriter writer;
//声明Socket对象
Socket socket;
//声明文本域对象
private JTextArea ta=new JTextArea();
//声明文本框组件对象
private JTextField jf=new JTextField();
//声明Container对象
Container cc;
//声明构造方法
public MyClient(String title) {
//调用父类的构造方法
super(title);
//设置窗体关闭方式
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//实例化对象
cc=this.getContentPane();
//创建JScrollPane面板
final JScrollPane scrollPane=new JScrollPane();
scrollPane.setBorder(new BevelBorder(BevelBorder.RAISED));
getContentPane().add(scrollPane,BorderLayout.CENTER);
scrollPane.setViewportView(ta);
//将文本框放在窗体下部
cc.add(jf,"South");
jf.addActionListener(new ActionListener() {
//绑定事件
@Override
public void actionPerformed(ActionEvent e) {
//将文本框中的数据写入流
writer.println(jf.getText());
//将文本框中的信息显示在文本域中
ta.append(jf.getText()+'\n');
ta.setSelectionEnd(ta.getText().length());
jf.setText("");//将文本框清空
}
});
}
//连接套接字方法
private void connect() {
//文本域中提示信息
ta.append("尝试连接\n");
try {//捕捉异常
//实例化Socket对象
socket=new Socket("192.168.0.107",8080);
writer=new PrintWriter(socket.getOutputStream(),true);
//文本域中提示信息
ta.append("完成连接\n");
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//创建本实例对象
MyClient client=new MyClient("向服务器送数据");
//设置窗体大小
client.setSize(200,200);
//将窗体显示
client.setVisible(true);
//调用连接方法
client.connect();
}
}