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

📄 sample.txt

📁 基于流式socket API的通信
💻 TXT
字号:
import java.net.*;
import java.io.*;

public class MyStreamSocket extends Socket {
   private Socket  socket;
   private BufferedReader input;
   private PrintWriter output;

   MyStreamSocket(String acceptorHost,
                  int acceptorPort ) throws SocketException,
                                   IOException{
      socket = new Socket(acceptorHost, acceptorPort );
      setStreams( );
   }

   MyStreamSocket(Socket socket)  throws IOException {
      this.socket = socket;
      setStreams( );
   }

   private void setStreams( ) throws IOException{
      // get an input stream for reading from the data socket
      InputStream inStream = socket.getInputStream();
      input = 
         new BufferedReader(new InputStreamReader(inStream));
      OutputStream outStream = socket.getOutputStream();
      // create a PrinterWriter object for character-mode output
      output = 
         new PrintWriter(new OutputStreamWriter(outStream));
   }

   public void sendMessage(String message)
   		          throws IOException {	
      output.println(message);   
      
      output.flush();               
   } // end sendMessage

   public String receiveMessage( )
		throws IOException {	
   
      String message = input.readLine( );  
      return message;
   } 

   public void close( )
		throws IOException {	
      socket.close( );
   }
} //end class

import java.net.*;
import java.io.*;

public class Example5ConnectionRequestor {

   public static void main(String[] args) {
      if (args.length != 3)
         System.out.println
            ("This program requires three command line arguments");
      else {
         try {
                String acceptorHost = args[0];                //服务器的域名或IP地址
  		int acceptorPort = Integer.parseInt(args[1]); //服务器的端口号
                String respond = args[2];                      //反馈信息
            
   	      MyStreamSocket mySocket = 
               new MyStreamSocket(acceptorHost, acceptorPort); // 初始化一个数据socket
            System.out.println("Connection request granted"); 
            String message = mySocket.receiveMessage( );       //等待接受信息
            System.out.println("Message received:");
            System.out.println("\t" + message);
            
            mySocket.sendMessage(respond);                     //发送反馈信息
            System.out.println("message sent"); 
            mySocket.close( );                                   //关闭数据socket
            System.out.println("data socket closed");
         } // end try
	      catch (Exception ex) {
            ex.printStackTrace( );
	      }
      }  
   }  
}  


import java.net.*;
import java.io.*;

public class Example5ConnectionAcceptor {
   public static void main(String[] args) {
      if (args.length != 2)
         System.out.println
            ("This program requires two command line arguments");
      else {
         try {
  	       int portNo = Integer.parseInt(args[0]);         //本程序所使用的端口号
               String message = args[1];                       //要发送的信息
              	
   	      ServerSocket connectionSocket = new ServerSocket(portNo);// 初始化一个socket 用于接收连接
            System.out.println("now ready accept a connection");  
                      
            MyStreamSocket dataSocket =  
               new MyStreamSocket(connectionSocket.accept());     //等待连接
            System.out.println("connection accepted"); 
            dataSocket.sendMessage(message);                      //发送信息

            System.out.println("message sent"); 
            String message1 = dataSocket.receiveMessage( );         //等待接受信息
            System.out.println("Message received:");
            System.out.println("\t" + message1);
            dataSocket.close( );                                 //关闭数据socket
            System.out.println("data socket closed");
            connectionSocket.close( );                          //关闭连接socket
            System.out.println("connection socket closed"); 
         } // end try
	      catch (Exception ex) {
           ex.printStackTrace( );
	      } // end catch
      } // end else
   } // end main
} // end class

⌨️ 快捷键说明

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