📄 server.java
字号:
// Fig. 24.5: Server.java
// Set up a Server that will receive a connection from a client, send
// a string to the client, and close the connection.
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Server extends JFrame implements ActionListener
{
private JTextField enterField;
private JTextArea displayArea;
//private ObjectOutputStream output;
//private ObjectInputStream input;
private BufferedReader input;
private PrintWriter output;
private ServerSocket server;
private Socket conn;
private int counter = 1;
// set up GUI
public Server() {
super( "Server" );
enterField = new JTextField();
enterField.setEditable( false );
enterField.addActionListener(this);
add( enterField, BorderLayout.NORTH );
displayArea = new JTextArea();
add( new JScrollPane( displayArea ), BorderLayout.CENTER );
setSize( 300, 450 );
setVisible( true );
}
public void actionPerformed( ActionEvent event )
{
sendData( enterField.getText() );
enterField.setText( "" );
}
public void runServer()
{
try
{
server = new ServerSocket( 12345 );
while ( true ) {
try {
displayArea.append( "Waiting for connection\n" );
conn = server.accept();
displayArea.append( "Connection " + counter + " received from: " +
conn.getInetAddress().getHostName() );
// get streams to send and receive data
//input = new ObjectInputStream( connection.getInputStream() );
//output = new ObjectOutputStream( connection.getOutputStream() );
//output.flush(); // flush output buffer to send header information
input = new BufferedReader(new InputStreamReader(conn.getInputStream()));
output = new PrintWriter(conn.getOutputStream());
displayArea.append( "\nGot I/O streams\n" );
processConnection();
}
catch ( EOFException eofException )
{
displayArea.append( "\nServer terminated connection" );
}
finally
{
closeConnection();
counter++;
}
}
}
catch ( IOException ioException )
{
ioException.printStackTrace();
}
}
// process connection with client
private void processConnection() throws IOException
{
String message = "Connection successful";
sendData( message );
enterField.setEditable( true );
do
{
try
{
//message = ( String ) input.readObject();
message = input.readLine();
displayArea.append( "\n" + message );
}
catch ( Exception ex )
{
displayArea.append( "\nUnknown object type received" );
}
} while ( !message.equals( "CLIENT>>> END" ) );
}
private void closeConnection()
{
displayArea.append( "\nTerminating connection\n" );
enterField.setEditable( false );
try
{
output.close();
input.close();
conn.close();
}
catch ( IOException ioException )
{
ioException.printStackTrace();
}
}
// send message to client
private void sendData( String message )
{
try
{
//output.writeObject( "SERVER>>> " + message );
output.println("SERVER>>> " + message);
output.flush();
displayArea.append( "\nSERVER>>> " + message );
}
catch ( Exception ioException )
{
displayArea.append( "\nError writing object" );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -