📄 m_server.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 + -