⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 talkserver.java

📁 用java写的点对点的通信
💻 JAVA
字号:
package Talk;
import java.net.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;

import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;
public class TalkServer extends JFrame{

	private JTextArea sentTextArea;
	private JTextArea showTextArea;
	private Socket connection;
	private ServerSocket server;
	private int counter;
	private ObjectInputStream input;
	private ObjectOutputStream output;
	
	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		TalkServer server=new TalkServer();
		server.runserver();
		

	}
	public TalkServer() {
		super("服务器端");
		this.setSize(500, 420);
		getContentPane().setLayout(null);

		final JPanel show = new JPanel();
		show.setBorder(new TitledBorder(null, "对话", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		show.setLayout(new BorderLayout());
		show.setBounds(14, 16, 468, 235);
		
		getContentPane().add(show);

		showTextArea = new JTextArea();
		showTextArea.setBorder(new BevelBorder(BevelBorder.LOWERED));
		show.add(showTextArea, BorderLayout.CENTER);

		final JPanel sentpanl = new JPanel();
		sentpanl.setBorder(new TitledBorder(null, "输入", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		
		sentpanl.setLayout(new BorderLayout());
		sentpanl.setBounds(13, 269, 469, 72);
		getContentPane().add(sentpanl);

		sentTextArea = new JTextArea();
		sentTextArea.setBorder(new BevelBorder(BevelBorder.LOWERED));
		  sentTextArea.setEnabled(false);
		sentpanl.add(sentTextArea, BorderLayout.CENTER);

		final JButton sentbutton = new JButton();
		sentbutton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				String message=sentTextArea.getText();
				sentmessage(message);
				//System.out.println(message);
				
			}
		});
		sentbutton.setText("发送");
		sentbutton.setBounds(383, 350, 99, 23);
		getContentPane().add(sentbutton);
		
		this.setVisible(true);
		this.setResizable(false);
		this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);

		final JButton off = new JButton();
		off.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) 
			{
				sentmessage("TERMINATE");
			}
		});
		off.setText("关闭");
		off.setBounds(23, 350, 99, 23);
		getContentPane().add(off);
	}
	
	 private void waitconnet() 
	 {
		 try
		 {
			 showTextArea.setText("waiting");
			 connection=server.accept();
			 showTextArea.append("\n"+"connection: "+counter+" host: "
					 +connection.getInetAddress().getHostName());
			 			 			 
			 
		 }
		 catch(IOException e){ System.out.println(e.getMessage()); }
		 		 
	 }
	 
	private void getstream()
	{
		try
		{
			output =new ObjectOutputStream(connection.getOutputStream());
			output.flush();
			input=new ObjectInputStream(connection.getInputStream());
			showTextArea.append("I/O : ok");
			
		}
		catch(IOException e){}
	} 
	
	private void processconnect()
	{
		try{

		      String message = "SERVER>>> Connection successful";
		      output.writeObject( message );
		      output.flush();//刷新
		       sentTextArea.setEnabled(true);
		      do
		      {
		    	  try{
		    		  message=(String)input.readObject();
		    		  showTextArea.append("\n"+message);
		    		  showTextArea.setCaretPosition(
		    				  showTextArea.getText().length());//改变光标位置		    		  
		    	  }
			         catch ( ClassNotFoundException classNotFoundException ) {
			        	 showTextArea.append( "\nUnknown object type received" );
			         }		    	  
		    	//  catch(IOException e){System.out.println("processconnect1:"+e.getMessage());}
		      }
		      while(!message.equals( "CLIENT>>>TERMINATE" ));
		      
		}
		catch(IOException e){System.out.println(e.getMessage());}
	}
	
	private void sentmessage(String message)
	{
		try{
			output.writeObject("SERVER>>>"+message);
			output.flush();
			showTextArea.append("\nSERVER>>>"+message);
			
			}
		catch(IOException e){System.out.println("snebmessageEception"+e.getMessage());}
	}
	
	private void closeconnection()
	{
		  try{showTextArea.append( "\nUser terminated connection");
	       sentTextArea.setEnabled( false );
	      output.close();
	      input.close();
	      connection.close();}
		  catch(IOException e)
		  {
			  System.out.println("closeconnection exception"+e.getMessage());
		  }
	}
	
	private void runserver()
	{
		try
		{
			server=new ServerSocket(5000);
			 while ( true ) {


				 waitconnet() ;
				 getstream();
				 processconnect();
				 closeconnection();

		            ++counter;
		         }
			
		}
		catch(Exception e){}
	}

}


//TODO 自动生成方法存根
/*try
{
	ServerSocket server=null;
	try{ server=new ServerSocket(4700);}//在4700监听
	catch(Exception e)
	{ System.out.println("can not listen to:"+e); }
	
	Socket socket =null;
	
	try{socket=server.accept();}//用accept等待客户请求,有客户请求到来 产生socket
	catch(Exception e){System.out.println("accept"+e);}

	String line;
	BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
	PrintWriter os =new PrintWriter(socket.getOutputStream());
	BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
	System.out.println("cl1:"+is.readLine());
	line=sin.readLine();
	while (!line.equals("bye"))
	{
		os.println(line);
		os.flush();
		System.out.println("se:"+line);
		System.out.println("cl:"+is.readLine());
		line=sin.readLine();
		if (line==null) break;
	}
	os.close();
	is.close();
	sin.close();
	socket.close();
	server.close();
}
catch(Exception e)
{
	System.out.println("all"+e);
}*/

⌨️ 快捷键说明

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