package demo;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class Server extends JFrame implements ActionListener,Runnable{
	JButton jb_create;
	JButton jb_add;
	JTextArea area;
	JTextField jt_text;
	JButton jb_send;
	ServerSocket serverSocket;
	Socket socket;
	String ip;
	String port;
	String name;
	String friendName;
    InputStream input;
    OutputStream output;
	public Server(){
		this.setLayout(new BorderLayout());
		JPanel jp_button=new JPanel();
		JPanel jp_send=new JPanel();
		jp_button.setLayout(new GridLayout(2,1));
		jb_create=new JButton("创建房间");
		jb_add=new JButton("加入房间");
		jb_send=new JButton("发送");
	    jt_text=new JTextField(25);
		jb_create.addActionListener(this);
		jb_add.addActionListener(this);
		jb_send.addActionListener(this);
		
		
		area=new JTextArea();
	    JScrollPane js_area=new JScrollPane(area);
        js_area.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); 
		area.setLineWrap(true);
		area.setWrapStyleWord(true);
		jp_button.add(jb_create);
		jp_button.add(jb_add);
		jp_send.add(jt_text);
		jp_send.add(jb_send);
		this.add(jp_button,BorderLayout.EAST);
		this.add(js_area,BorderLayout.CENTER);
		this.add(jp_send,BorderLayout.SOUTH);
		this.setSize(400,300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setResizable(false);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
		
	}
	public void actionPerformed(ActionEvent e){
		if(e.getSource().equals(jb_create)){
			try {
				ip=InetAddress.getLocalHost().getHostAddress();
				port=JOptionPane.showInputDialog("输入要创建房间的端口号: ");
				JOptionPane.showMessageDialog(this,"你要创建的房间ip是: "+ip+" 端口号是: "+port);
				name=JOptionPane.showInputDialog("请输入你的名字");
				serverSocket=new ServerSocket(Integer.parseInt(port));
				socket=serverSocket.accept();
				this.setTitle(name);
				input=socket.getInputStream();
				output=socket.getOutputStream();
				//write=new BufferedWriter(new OutputStreamWriter(output));
				//read=new BufferedReader(new InputStreamReader(input));
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}else if(e.getSource().equals(jb_add)){
			try{
				ip=JOptionPane.showInputDialog("输入要加入房间的ip");
				port=JOptionPane.showInputDialog("输入创建房间的端口号");
				name=JOptionPane.showInputDialog("输入你的名字");
				socket=new Socket(ip,Integer.parseInt(port));
				this.setTitle(name);
				input=socket.getInputStream();
				output=socket.getOutputStream();
				//write=new BufferedWriter(new OutputStreamWriter(output));
				//read=new BufferedReader(new InputStreamReader(input));
			}catch(Exception e1){
				System.out.println(e1.getMessage());
			}
		}else if(e.getSource().equals(jb_send)){
			 String content=jt_text.getText();
			 try {
				content=name+"   "+new Date()+"\n"+content+"\n";
				if(output!=null){
					output.write(content.getBytes());
				}
				System.out.println("content: "+content);
				area.append(content);
				jt_text.setText("");
			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
	}
	public static void main(String[] args){
		Server server=new Server();
		Thread t=new Thread(server);
		t.start();
	}
	public void run() {
		System.out.println("run");
		String content=new String();
		byte[] data=new byte[1024];
		while(true){
				try {
					if(input!=null){
						int i=input.read(data);
						content=new String(data,0,i);
						area.append(content);
					}
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}

}
最近下载更多
fuyouou  LV5 2023年6月29日
vip666  LV1 2023年3月20日
wwt-13  LV2 2022年6月6日
tomtom113  LV2 2022年5月12日
2310573421  LV7 2022年4月23日
666777111  LV2 2021年12月30日
yangchengshuai  LV15 2021年11月22日
Elon_Edge  LV1 2020年12月31日
zxp888  LV4 2020年12月18日
liuxie  LV12 2020年12月13日
最近浏览更多
liamin  LV2 6月24日
周鸣郝  LV2 5月26日
krispeng  LV13 4月16日
taoshen95  LV15 1月19日
zeng1206  LV7 2023年12月21日
暂无贡献等级
yuchunxing  LV1 2023年9月2日
fuyouou  LV5 2023年6月26日
2017143155  LV12 2023年6月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友