首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

Please help me, I have a server.java and client.java to test the file transmissi

2012-01-06 
Please help me, I have a server.java and client.java to test the file transmission on internetHowdo

Please help me, I have a server.java and client.java to test the file transmission on internet
How   do   I   set   up   the   web   server   for   this   server.java   so   that   a   client   can   connect   to   server   by   its   ip?

Sorry   I   can 't   type   Chinese   now.   Can   you   give   me   a   basic   idea?

These   two   apps   only   work   in   LAN,   how   do   I   make   it   work   through   internet?

Code:

//server

import   java.net.*;
import   java.io.*;
import   java.util.*;
import   java.awt.*;
import   java.awt.event.*;
import   java.awt.Color;
import   java.util.Random;
import   javax.swing.*;
import   javax.swing.filechooser.*;
import   javax.swing.border.*;

public   class   Server   extends   Frame   implements   ActionListener,   WindowListener  
{

static   ServerSocket   listenSocket;
static   Socket   connection;
private   static   int   maxConnections=0;
//final   JFileChooser   fc   =   new   JFileChooser();


static   String   message;

static   TextField   hostDisplay,   portDisplay;
static   TextArea   logDisplay,   msgDisplay;
Panel   topPanel;
Panel   middlePanel;
Panel   buttonPanel;
Button   sendButton,   quitButton;

public   static   final   int   DEFAULT_PORT   =   8901;
static   String   host;
static   int   port;

public   Server   (   String   s)    
{
        super   (   s   );
        buildUI   ();

}     //   end   Server   constructor


public   void   connectClient   (   )    
{
if   (   !   (   portDisplay.getText   ()   ).equals   (   " "   )   )   port   =   Integer.parseInt   (   portDisplay.getText   ()   );
else   port   =   DEFAULT_PORT;

}     //   end   connectClient



public   static   void   main   (   String   [   ]   args   )    
{

Server   serverFrame   =   new   Server(   "Server "   );

serverFrame.addWindowListener   (   serverFrame   );

int   i=0;

if   (   !   (   portDisplay.getText   ()   ).equals   (   " "   )   )   port   =   Integer.parseInt   (   portDisplay.getText   ()   );////
else   port   =   DEFAULT_PORT;////

try
{
ServerSocket   listener   =   new   ServerSocket(port);
Socket   server;

logDisplay.setText   (   "Server   running   on   "+host+ ",   port   "+port+ "\n "   );/////

while((i++   <   maxConnections)   ||   (maxConnections   ==   0))
{
doComms   connection;


server   =   listener.accept();
System.out.println( "Connected:   "   );
doComms   conn_c=   new   doComms(server);
Thread   t   =   new   Thread(conn_c);
t.start();
}
}
catch   (IOException   ioe)  
{
System.out.println( "IOException   on   socket   listen:   "   +   ioe);
ioe.printStackTrace();
}

    }     //   end   main


public   void   buildUI   ()    
{

try  
{
InetAddress   here   =   InetAddress.getLocalHost   ();
host   =   here.getHostName   ();
}
catch   (UnknownHostException   e)  
{   ;}

hostDisplay   =   new   TextField   (   host,   30   );
hostDisplay.setEditable   (   false   );
portDisplay   =   new   TextField   (   Integer.toString   (   DEFAULT_PORT   ),   4   );
topPanel   =   new   Panel   ();
topPanel.setLayout   (   new   GridLayout   (   2,   1   )   );
topPanel.add   (   hostDisplay   );
topPanel.add   (   portDisplay   );

logDisplay   =   new   TextArea   (   40,   10   );
msgDisplay   =   new   TextArea   (   40,   10   );
middlePanel   =   new   Panel   ();
middlePanel.setLayout   (   new   GridLayout   (   2,   1   )   );
middlePanel.add   (   logDisplay   );
middlePanel.add   (   msgDisplay   );

sendButton   =   new   Button   (   "Send   File "   );
quitButton   =   new   Button   (   "Quit "   );
sendButton.addActionListener   (   this   );
quitButton.addActionListener   (   this   );
buttonPanel   =   new   Panel   (   );
buttonPanel.add   (   sendButton   );
buttonPanel.add   (   quitButton   );

add   (   "North ",   topPanel   );
add   (   "Center ",   middlePanel   );
add   (   "South ",   buttonPanel   );

resize   (   400,   450   );
setVisible   (   true   );

}     //   end   buildUI
   
    //****     ActionListener   methods

public   void   actionPerformed   (   ActionEvent   e   )    
{

Object   s   =   e.getSource();

//   ***   process   Button   actions

if   (   s   instanceof   Button   )  
{

        if   (   s   ==   sendButton   )
        {
              /*   int   returnVal   =   fc.showOpenDialog(Server.this);

                                logDisplay.append( "Opening   -   ");

                                if   (returnVal   ==   JFileChooser.APPROVE_OPTION)  


                                {
                                        File   file   =   fc.getSelectedFile();

                                        logDisplay.append(file.getName()   +   "\n ");

                                        //Create   a   client,   give   it   the   chosen   filename,   and   send   the   data   across
                                       
                                        if   (send(file.getPath().toString()))
                                                logDisplay.append( "Success. "   +   "\n ");
                                        else
                                                logDisplay.append( "Failure. "   +   "\n ");

        }     //   end   sendButton*/
        }

        if   (   s   ==   quitButton   )  
        {
                hide   ();
                dispose   ();
                System.exit   (   0   );
        }     //   end   quitButton
   

}     //   end   process   Button   actions

}     //   end   actionPerformed


//****     WindowListener   methods

public   void   windowActivated   (   WindowEvent   e   )    
{
}

public   void   windowDeactivated   (   WindowEvent   e   )  
{
}

public   void   windowOpened   (   WindowEvent   e   )  
{
}

public   void   windowClosed   (   WindowEvent   e   )  
{
}

public   void   windowClosing   (   WindowEvent   e   )  
{
hide   ();
dispose   ();
System.exit(0);
}

public   void   windowIconified   (   WindowEvent   e   )  
{
}

public   void   windowDeiconified   (   WindowEvent   e   )    
{
}


}     //   end   Server


class   doComms   implements   Runnable


{
        private   Socket   server;
        private   String   line,input;
        Random   rand   =   new   Random();
final   String   OUTPUTFILENAME   =   "C:\\receivedData ";
        doComms(Socket   server)    
        {
            this.server=server;
        }

        public   void   run   ()  
        {

              try  
              {


FileOutputStream   fos   =   new   FileOutputStream(OUTPUTFILENAME);
                BufferedOutputStream   out   =   new   BufferedOutputStream(fos);
                BufferedInputStream   in   =   new   BufferedInputStream(   server.getInputStream()   );
                //Read,   and   write   the   file   to   the   socket
                int   i;
                while   ((i   =   in.read())   !=   -1)  
                {
                        out.write(i);
                        //Server.logDisplay.appendText( " "+i);
                        //Server.logDisplay.appendText( "Receiving   data... "+ "\n ");
                }
               
                         
                out.flush();
                //out1.flush();
                //out2.flush();
                        in.close();
                        //out1.close();
                        out.close();
                        //out2.close();
                        server.close();
                               
                        Server.logDisplay.appendText( "Transfer   complete.   File   is   saved   to   C:recievedData ");

               
        }
             
                catch(Exception   e)  
                {



                                Server.logDisplay.appendText( "Error!   It   didn 't   work!   "   +   e   +   "\n ");
                  }

                //Sleep...
                try   {
                        Thread.sleep(1000);
                }  
                catch   (InterruptedException   ie)  
                {
                        Server.logDisplay.appendText( "Interrupted ");
                }


        }
}




[解决办法]
//Client


import java.net.*;
import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.border.*;

public class Client extends Frame implements ActionListener, WindowListener
{


Socket connection;
//static final String OUTPUTFILENAME = "C:\\receivedData ";
final JFileChooser fc = new JFileChooser();

InputStream inStream;
DataInputStream inDataStream;
OutputStream outStream;
DataOutputStream outDataStream;

public static final String DEFAULT_HOST = "DLKD122-PC7 ";
public static final int DEFAULT_PORT = 8901;
static String host;
static int port;

static String message;

static TextField hostDisplay, portDisplay;
static TextArea logDisplay, msgDisplay;
Panel topPanel;
Panel middlePanel;
Panel buttonPanel;
Button sendButton, sendFileButton,quitButton;

public Client ()
{

super ( "Client " );
buildUI ();

} // end Client


public void connectClient ( )
{

try
{
InetAddress here = InetAddress.getLocalHost ();
logDisplay.appendText ( "here = "+here+ "\n " );
host = here.getHostName ();
logDisplay.appendText ( "host = "+host+ "\n " );
}
catch (UnknownHostException e) { ;}

//host = hostDisplay.getText ();
//if ( host.equals ( " " ) )
host = DEFAULT_HOST;
if ( ! ( portDisplay.getText () ).equals ( " " ) )
port = Integer.parseInt ( portDisplay.getText () );
else
port = DEFAULT_PORT;

try
{
connection = new Socket ( InetAddress.getByName (host), port );
//connection = new Socket ( InetAddress.getByAddress (host), port );
outStream = connection.getOutputStream ();
outDataStream = new DataOutputStream ( outStream );
inStream = connection.getInputStream ();
inDataStream = new DataInputStream ( inStream );

logDisplay.setText ( "Socket created: connecting to server\n " );

message = msgDisplay.getText ();
outDataStream.writeUTF ( message );
logDisplay.appendText ( "Message, below, sent to Server\n " );



try
{
msgDisplay.setText ( " " );
msgDisplay.setForeground ( Color.red );
while ( true )
{
message = inDataStream.readUTF ();
msgDisplay.appendText ( message );
logDisplay.appendText ( "Message, below, received from server\n " );
} // end while
} // end try for input
catch ( EOFException except )
{
connection.close ();
logDisplay.appendText ( "Connection closed\n " );
} // end catch
catch ( IOException except )
{
System.out.println ( "IO Exception ");
except.printStackTrace ();
} // end catch

} // end try

catch ( IOException except)
{
except.printStackTrace ();
} // end catch

} // end connectClient

public static boolean send( String filename )
{

try
{
InetAddress here = InetAddress.getLocalHost ();
logDisplay.appendText ( "here = "+here+ "\n " );
host = here.getHostName ();
logDisplay.appendText ( "host = "+host+ "\n " );
}
catch (UnknownHostException e) { ;}

//host = hostDisplay.getText ();
//if ( host.equals ( " " ) )
host = DEFAULT_HOST;
if ( ! ( portDisplay.getText () ).equals ( " " ) )
port = Integer.parseInt ( portDisplay.getText () );
else port = DEFAULT_PORT;

try
{
logDisplay.append( "Sending data...\n ");
Socket skt = new Socket(host, port);

//Create a file input stream and a buffered input stream.
FileInputStream fis = new FileInputStream(filename);
BufferedInputStream in = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream( skt.getOutputStream() );

//System.out.println( "after new inputstream ");
long currTime = System.currentTimeMillis();

//Read, and write the file to the socket
int i;
while ((i = in.read()) != -1)
{
out.write(i);
//System.out.println(i);
}

//out.write(-1); // to signal the end of file??
//Close the socket and the file
//System.out.println( "about to read ");


//logDisplay.append(message);
out.flush();
out.close();
in.close();
//in1.close();
//in2.close();
skt.close();
//logDisplay.append( " "+(System.currentTimeMillis()-currTime));
return true;
}
catch( Exception e )
{


logDisplay.append( "Error! It didn 't work! " + e + "\n ");

return false;
}
}



public static void main ( String [ ] args )
{

Client client = new Client ();
client.addWindowListener ( client );

} // end main


public void buildUI ()
{

try
{
InetAddress here = InetAddress.getLocalHost ();
host = here.getHostName ();
}
catch (UnknownHostException e)
{ ;}

hostDisplay = new TextField ( host, 30 );
portDisplay = new TextField ( Integer.toString ( DEFAULT_PORT ), 4 );
topPanel = new Panel ();
topPanel.setLayout ( new GridLayout ( 2, 1 ) );


topPanel.add ( hostDisplay );
topPanel.add ( portDisplay );

logDisplay = new TextArea ( 40, 10 );
msgDisplay = new TextArea ( 40, 10 );
msgDisplay.setText ( "Default Message. " );
middlePanel = new Panel ();
middlePanel.setLayout ( new GridLayout ( 2, 1 ) );
middlePanel.add ( logDisplay );
middlePanel.add ( msgDisplay );

sendButton = new Button ( "Send Message " );
sendFileButton = new Button ( "Send File " );
quitButton = new Button ( "Quit " );
sendButton.addActionListener ( this );
sendFileButton.addActionListener ( this );
quitButton.addActionListener ( this );
buttonPanel = new Panel ( );
buttonPanel.add ( sendFileButton );
buttonPanel.add ( sendButton );
buttonPanel.add ( quitButton );

add ( "North ", topPanel );
add ( "Center ", middlePanel );
add ( "South ", buttonPanel );

resize ( 400, 450 );
show ();

} // end buildUI


public void actionPerformed ( ActionEvent e )
{
Object s = e.getSource();

// *** process Button actions

if ( s instanceof Button )
{
if ( s == sendButton )
{
connectClient ();
} // end sendButton

if ( s == sendFileButton )
{
int returnVal = fc.showOpenDialog(Client.this);

logDisplay.append( "Opening - ");

if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();

logDisplay.append(file.getName() + "\n ");

//Create a client, give it the chosen filename, and send the data across

if (send(file.getPath().toString()))
logDisplay.append( "Success. " + "\n ");
else
logDisplay.append( "Failure. " + "\n ");
}

} // end sendButton
if ( s == quitButton )
{
this.hide ();
this.dispose ();
System.exit ( 0 );
} // end quitButton

} // end process Button actions

} // end actionPerformed


//**** WindowListener methods

public void windowActivated ( WindowEvent e )
{
}

public void windowDeactivated ( WindowEvent e )
{
}

public void windowOpened ( WindowEvent e )
{
}

public void windowClosed ( WindowEvent e )
{
}

public void windowClosing ( WindowEvent e )
{
hide ();
dispose ();
System.exit(0);
}

public void windowIconified ( WindowEvent e )
{
}

public void windowDeiconified ( WindowEvent e )
{
}


} // end Client

热点排行