/*
* 服务器端
*/
package TestServer;
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.nio.Buffer;
public class MyServer3 extends JFrame{
public static void main(String[] args) {
// TODO Auto-generated method stub
MyServer3 ms = new MyServer3();
}
public MyServer3()
{
new ServerSetForm();
}
}
package TestServer;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
public class ServerSetForm extends JFrame implements ActionListener{
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JScrollPane jsp = null;
JPanel jp = null;
//把信息发给客户端对象
PrintWriter pw = null;
public ServerSetForm()
{
jta = new JTextArea();
jtf = new JTextField(20);
jb = new JButton("发送");
jb.addActionListener(this);
jsp = new JScrollPane(jta);
jp = new JPanel();
this.add(jsp, BorderLayout.CENTER);
jp.add(jtf);
jp.add(jb);
this.add(jp,BorderLayout.SOUTH);
this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("服务器端");
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
try {
ServerSocket ss = new ServerSocket(9998);
Socket s = ss.accept();
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(),true);
//读取从客户端得到的信息
while(true)
{
String str = br.readLine();
jta.append("服务器接收:"+str+"\r\n");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//用户按下发送的按钮
if(e.getSource() == jb)
{
//把服务器在jtf写的内容发送到客户端
String info = jtf.getText();
jta.append("服务器发出:" + info + "\r\n");
pw.println(info);
//清空jtf的内容
jtf.setText("");
}
}
}
/*
* 客户端
*/
package TestClient;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.*;
import java.net.*;
/*
* KeyListener按键不能发生反应
* ??????
*/
public class MyClient3 extends JFrame implements ActionListener,KeyListener{
JTextArea jta = null;
JTextField jtf = null;
JButton jb = null;
JScrollPane jsp = null;
JPanel jp = null;
PrintWriter pw = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
MyClient3 ms = new MyClient3();
}
public MyClient3()
{
jta = new JTextArea();
jtf = new JTextField(20);
jb = new JButton("发送");
jb.addActionListener(this);
addKeyListener(this);
jsp = new JScrollPane(jta);
jp = new JPanel();
this.add(jsp, BorderLayout.CENTER);
jp.add(jtf);
jp.add(jb);
this.add(jp,BorderLayout.SOUTH);
this.setSize(400,300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("客户端");
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setVisible(true);
try {
Socket s = new Socket("127.0.0.1",9998);
InputStreamReader isr = new InputStreamReader(s.getInputStream());
BufferedReader br = new BufferedReader(isr);
pw = new PrintWriter(s.getOutputStream(),true);
while(true)
{
String info = br.readLine();
/*
* append向JTextArea中添加信息的时候不会产生覆盖的现象
* setText往JTextArea中添加信息的时候会产生覆盖现象
*/
jta.setText("客户端接收到:" + info + "\r\n");
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
if(arg0.getSource() == jb)
{
//getText表示从JTextField中得到要输入的信息
String str = jtf.getText();
jta.append("客户端发出:" + str + "\r\n");
pw.println(str);
jtf.setText("");
}
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
System.out.println("********");
if(e.getKeyCode() == KeyEvent.VK_ENTER)
{
System.out.println("sadfsdfasdfafsdasfadsdfasdfa");
//getText表示从JTextField中得到要输入的信息
String str = jtf.getText();
jta.append("客户端发出:" + str + "\r\n");
pw.println(str);
jtf.setText("");
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
}
客户端与服务器端不要在同一个工程中
实现界面