chatserver.java

来自「一个简单的socket通信的聊天对话程序」· Java 代码 · 共 136 行

JAVA
136
字号
package chatroom;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.io.*;
import java.net.*;

public class chatserver {

	private JTextArea textArea_s;
	private JTextField textField;
	private JFrame frame;
	private int port=8000;//定义服务器需要打开的端口号
	private static ServerSocket serverSocket;//定义服务器端的套接字类
	 InputStreamReader Is;
	 OutputStream Os;
	 BufferedReader cin = null;//客户端输入流
	 PrintWriter PS;//客户端输流
	 String s;
   static String said="";
	   Socket socket;//定义客户端套接字类


	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		try {
			chatserver window = new chatserver();
			window.frame.setVisible(true);
			window.getrequest();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Create the application
	 */
	public chatserver() {
		initialize();
		try{
			serverSocket = new ServerSocket(port);//创建一个ServerSocket对象
			textArea_s.append("服务启动\n");
		 } catch(IOException e){
		textArea_s.append("监听端口"+port+"失败");	 		 
		 }
		   try{
			   socket = serverSocket.accept();  //等待客户连接
			   if(socket.isConnected())
			   System.out.println("sucess!'");
			   else
				   System.out.println("fail!'");
		   }catch(IOException e){}
	}
	
	 //收到客户端请求
	 public String getrequest(){
		 String readLine =null;
		 while(true)
		 {
		 try{
			    Is=new  InputStreamReader(socket.getInputStream() );
			    cin = new BufferedReader(Is);//获得服务器端输入流,并放入缓冲区
			    textArea_s.append("please wait client's message...\n");
		       readLine = cin.readLine();//从客户端的输出读取一行数据
		       textArea_s.append("client said:"+readLine+"\n"); //打印字符串
		 }catch (Exception e){ textArea_s.append("error");}
		// return readLine;
		 }
	 }
	 //发送相应给客户端
	 public void sendrequest(String response){
		 try{
			 Os=socket.getOutputStream();	 
			   PS=new PrintWriter(Os,true);//
			   s=said; //读取用户输入的字符串
			   textArea_s.append("you say:"+s+"\n");
				  PS.println(s); //将读取得字符串传给client
			   
		 }catch (Exception e){}
		 
	 }

	/**
	 * Initialize the contents of the frame
	 */
	public void initialize() {
		frame = new JFrame();
		frame.getContentPane().setLayout(null);
		frame.setTitle("server");
		frame.setName("frame_server");
		frame.setBounds(100, 100, 532, 375);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		textField = new JTextField();
		textField.setName("s_text");
		textField.setBounds(24, 266,252, 30);//..setName("text_server");
		textField.setMaximumSize(new Dimension(100, 10));
		frame.getContentPane().add(textField);

		final JButton button = new JButton();
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				 said = textField.getText();
			     if (said==null)
			    	said=""; 
			     
			     sendrequest(said) ; 
			    // getrequest();
			}
		});
		button.setName("s_button");
		button.setBounds(322, 265, 84, 30);
		button.setPreferredSize(new Dimension(20, 30));
		button.setText("提交");
		frame.getContentPane().add(button);

		textArea_s = new JTextArea();
		textArea_s.setName("s_textroom");
		textArea_s.setBounds(22, 27, 424, 197);
		textArea_s.setPreferredSize(new Dimension(300, 0));
		frame.getContentPane().add(textArea_s);
	}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?