package CnS;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Simple_Server{
//这里都是一些相关的组件
private JFrame ServerViewer=new JFrame("服务器端");
private JTextArea Contents=new JTextArea(10,25);
private JTextField Say=new JTextField(18);
private JButton Sent=new JButton("发送");
private JPanel panel1=new JPanel();
private JPanel panel2=new JPanel();
private JScrollPane jsp=new JScrollPane(Contents);
private ServerSocket ss;
private Socket s;
private DataOutputStream dos;
private DataInputStream dis;
public static void main(String arsg[]){
Simple_Server ss=new Simple_Server();
ss.creatUI();
ss.connect();
ss.creatThread();
}
//创建可视化窗口
public void creatUI(){
//面板的排版问题
FlowLayout fl1=new FlowLayout();
fl1.setAlignment(FlowLayout.LEFT);
panel1.setLayout(fl1);
panel2.setLayout(fl1);
//往面板中添加组件
Contents.setEditable(false);
panel1.add(jsp);
panel2.add(Say);
panel2.add(Sent);
MyServerListener l=new MyServerListener(this);
Sent.addActionListener(l);
Say.addActionListener(l);
//往界面中添加面板
ServerViewer.add(panel1,"North");
ServerViewer.add(panel2,"South");
//设置程序的图标
Image
image=Toolkit.getDefaultToolkit().getImage("E:\\photo\\灰-Vista.jpg");
ServerViewer.setIconImage(image);
ServerViewer.setBounds(200,200,295,265);
ServerViewer.setVisible(true);
}
//连接
public void connect(){
try{
ss=new ServerSocket(8888);
s=ss.accept();
dos=new DataOutputStream(s.getOutputStream());
dis=new DataInputStream(s.getInputStream());
}catch(IOException e){
e.printStackTrace();
}
}
//关闭,好像没有用上
public void close(){
try{
dis.close();
dos.close();
s.close();
ss.close();
}catch(IOException e){
e.printStackTrace();
}
}
public void creatThread(){
MyServerReader reader=new MyServerReader(this);
reader.start();
}
public DataInputStream getDataInputStream(){
return dis;
}
public DataOutputStream getDataOutputStream(){
return dos;
}
public JTextArea getJTextArea(){
return Contents;
}
public JTextField getJTextField(){
return Say;
}
}
class MyServerListener implements ActionListener{
private Simple_Server server;
public MyServerListener(Simple_Server server){
this.server=server;
}
public void actionPerformed(ActionEvent e) {
JTextField jtf=server.getJTextField();
String info=jtf.getText();
if(info.equals("")){
JOptionPane.showMessageDialog(null,
"发送内容不能为空",
"提示",JOptionPane.INFORMATION_MESSAGE, null);
}else{
server.getJTextArea().append("我说:"+info+"\n");
try {
server.getDataOutputStream().writeUTF(info);
} catch (IOException e1) {e1.printStackTrace();}
}
jtf.setText("");
jtf.requestFocus();//这句好经典呀
}
}
class MyServerReader extends Thread{
private Simple_Server server;
public MyServerReader(Simple_Server
server){
this.server=server;
}
public void run(){
String info;
DataInputStream dis=server.getDataInputStream();
JTextArea jta=server.getJTextArea();
try{
while(true){
info=dis.readUTF();
jta.append("好友说:"+info+"\n");
}
}catch(IOException e){
e.printStackTrace();
}
}
}