host.java

来自「Java网络编程的若干源码之No.1」· Java 代码 · 共 139 行

JAVA
139
字号
import java.awt.*;
import java.net.*;
import java.util.*;
import java.io.*;


public class Host 

{  final static int WAIT_TIMEOUT = ( 1000 );

   public static String sentence;
		   
   public static String modifiedSentence="";
   public static BufferedReader inFromUser;
   public static Socket clientSocket;
   public static DataOutputStream outToServer;
   public static BufferedReader inFromServer;
			

    public Host()
    {}

   
   
	
	
	
	

    public String getString() {return modifiedSentence;}
    synchronized private static int getResponse() throws IOException
    {
        
        
        TimeoutRead thread = new TimeoutRead( inFromServer );
        //thread.setBuffer("");
        thread.start();
        try
        {
            thread.join( WAIT_TIMEOUT );
        }
        catch( InterruptedException e )
        {
        }
        if( thread.isComplete() && thread.getBuffer().charAt(0)=='A' )
        {
            return 1;
        }
        return 0;
        // nothing in buffer
    }


   public static void main(String arg[]) throws Exception
	{// 

         int x;

        //
       while(true){   System.out.println("send data:");
               
                 inFromUser = new  BufferedReader (new InputStreamReader ( System.in ));
		
		        sentence = inFromUser.readLine();
	       
	      
                	while(true){    
			                clientSocket = new Socket("127.0.0.1",4000);
			                inFromServer =  new BufferedReader (new InputStreamReader (
	       				   									                clientSocket.getInputStream()));
   
						
					outToServer = new DataOutputStream (
				  	    
				  	clientSocket.getOutputStream());
			
			                outToServer.writeBytes(sentence + '\n');
			                 		
			                 		
			                modifiedSentence = inFromServer.readLine();
			                 		
					x=getResponse();
			                if(x==1)
						{	
							System.out.println("sended!");													
			 				break;
						}   
					else {	System.out.println("re_send:");	}		 		
                       	   	   }
                   
                }	
      }      						              

}





class TimeoutRead extends Thread 
{
	private String s = new String( "" );
    private String buffer = new String( "" );
    private BufferedReader input;
    private boolean complete = false;
    synchronized String getBuffer() { return buffer; }
    synchronized void setBuffer(String s) { buffer=s; }
    
 
    	 
    	Host ttt=new Host();
    	
  
    
    
    synchronized public boolean isComplete()
    {
        return complete;
    }
    public TimeoutRead( BufferedReader i )
    {
        input = i;
    }
    public void run() // do input in thread 
    {
        
        	s=ttt.getString();
        	complete = true;
            do
            {
               setBuffer(s);
               
            } while (getBuffer().charAt(0)=='A'); 
        
        
        
    }
}

⌨️ 快捷键说明

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