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

📄 m_server.java

📁 用UDP协议实现两台电脑间的相互对话通信
💻 JAVA
字号:
// M_Server.java
//
// Set up a Server that will receive a connection
// from a client, send a string to the client,
// and close the connection.

// Java core packages
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;

// Java extension packets
import javax.swing.*;

public class M_Server extends JFrame 
{
private JTextField enterField;
private JTextArea displayArea;
private DatagramPacket inPacket;
private DatagramPacket outPacket;
private DatagramSocket mServer;
private InetAddress cAddr;
private int cPort;
private byte [] inBuffer;
private byte [] outBuffer;
private String s;
private int count=1;

// set up GUI
public M_Server()
{
	super("Server");

	Container container = getContentPane();

	// create enterField and register listener
	enterField = new JTextField();
	enterField.setEnabled( false );
	
	inBuffer=new byte[100];
	
   
        enterField.addActionListener(new ActionListener() 
            {
                  // send message to client
               public void actionPerformed( ActionEvent e )
              {
                  sendData(e.getActionCommand());
               }
   
           }  // end anonymous inner class
); // end call to addActionListener
   
         container.add(enterField,BorderLayout.NORTH);
  
         // create displayArea
         displayArea = new JTextArea();
         container.add(new JScrollPane(displayArea),BorderLayout.CENTER );
   
         setSize(500,300);
         setVisible( true );
      }
   
      // set up and run server 
     public void runServer()
      {
         // set up server to receive package; 
         // process connections
        try {
            mServer=new DatagramSocket(8341);
            
            waitForPacket();
            while ( true ) 
            {                
              getPacket();
                  
              processPacket();
   
              ++count;
            }
         }
// process EOFException when client closes connection 
         catch ( EOFException eofException )
         {
            System.out.println( "Client terminated connection" );
         }
  
         // process problems with I/O
        catch ( IOException ioException ) 
        {
            
            ioException.printStackTrace();
        }
      }
   

     // wait for connection to arrive, then display connection info
     private void waitForPacket() throws IOException
    {
        displayArea.setText( "Waiting for packet\n" );
     }

    // get Package to send and receive data
    
     private void getPacket() throws IOException
    {
    	enterField.setEnabled( true );
        inPacket= new DatagramPacket(inBuffer,inBuffer.length);
        
        try
        {        	        	
        mServer.receive(inPacket);//throw new IOException();
                
        }
        catch(IOException e)
        {
       		e.printStackTrace();
       		System.out.println("ioexception occurrs");	
        }
       
  	cAddr=inPacket.getAddress();
  	cPort=inPacket.getPort();
  	
  	displayArea.append( "\nPackage" +count+" received from: ClientAddress="
  	                    +cAddr.toString()+" at Port "+cPort);   
  	
     }
  
     // process packet
     private void processPacket() throws IOException
     {
        
        String message ;
        
        
        // enable enterField so server user can send messages
        
  
        // process messages sent from client

        // read message and display it
            
              message =new String(inPacket.getData(),0,inPacket.getLength());
              displayArea.append( message );
              displayArea.setCaretPosition(displayArea.getText().length() );
          
 }
  
     
     // send message to client
     private void sendData( String message )
     {
     	outBuffer=("\n周传乐>>> "+message).getBytes();
        // send object to client
        try 
        {

           outPacket= new DatagramPacket(outBuffer,outBuffer.length,cAddr,cPort);
              
           mServer.send(outPacket);
           enterField.setText("");
           displayArea.append( "\n周传乐>>> " + message );
        }
  
        // process problems sending object
        catch ( IOException ioException ) 
        {
           displayArea.append( "\nError writing object" );
        }
     }

   // execute application
     public static void main( String args[] )
     {
        M_Server application = new M_Server();
  
        application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
        application.runServer();
     }
  
  }  // end class Server  



⌨️ 快捷键说明

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