简单Java socket

750阅读 0评论2015-06-09 late0001
分类:Java

服务器

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class MyServer{

 public static void main(String args[]) {

  try{
   ServerSocket server=null;
 
   try{
    server=new ServerSocket(4700);
    //创建一个ServerSocket在端口4700监听客户请求
   }catch(Exception e) {
    System.out.println("can not listen to:"+e.getMessage());
    //出错,打印出错信息
   }
   System.out.println("Server waiting");
   Socket socket=null;
   try{
    socket=server.accept();
    //使用accept()阻塞等待客户请求,有客户
    //请求到来则产生一个Socket对象,并继续执行
   }catch(Exception e) {
    System.out.println("Error."+e);
    //出错,打印出错信息
   }
   String line;
   //由Socket对象得到输入流,并构造相应的BufferedReader对象
   BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
   //由Socket对象得到输出流,并构造PrintWriter对象
   PrintWriter os=new PrintWriter(socket.getOutputStream());
   //由系统标准输入设备构造BufferedReader对象
   BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
   //在标准输出上打印从客户端读入的字符串
   System.out.println("Client:"+is.readLine());
   System.out.print("Server:");
   //从标准输入读入一字符串
   line=sin.readLine();
   //如果该字符串为 "bye",则停止循环
   while(!line.equals("bye")){
    //向客户端输出该字符串
    os.println(line); 
    //刷新输出流,使Client马上收到该字符串
    os.flush();
    //在系统标准输出上打印读入的字符串
    //System.out.println("Server:"+line);
    //从Client读入一字符串,并打印到标准输出上
    System.out.println("Client:"+is.readLine());
    System.out.print("Server:");
    //从系统标准输入读入一字符串
    line=sin.readLine();
    
    }//继续循环
    os.close(); //关闭Socket输出流
    is.close(); //关闭Socket输入流
    socket.close(); //关闭Socket 
    server.close();//关闭ServerSocket
  }catch(IOException e){
   System.out.println("Error occur:"+e);//打印出错信息
  }
 }
}

客户端

import java.io.*;

import java.net.*;

public class MyClient {

 public static void main(String args[]) {

        try{

   Socket socket=new Socket("127.0.0.1",4700);
   //向本机的4700端口发出客户请求
   BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
   //由系统标准输入设备构造BufferedReader对象
   PrintWriter os=new PrintWriter(socket.getOutputStream());
   //由Socket对象得到输出流,并构造PrintWriter对象
   BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
   //由Socket对象得到输入流,并构造相应的BufferedReader对象
   System.out.print("Client:");
   String readStr;
   readStr=sin.readLine(); //从系统标准输入读入一字符串
   //若从标准输入读入的字符串为 "bye"则停止循环
   while(!readStr.equals("bye")){
    //将从系统标准输入读入的字符串输出到Server
    os.println(readStr);
    //刷新输出流,使Server马上收到该字符串
    os.flush();
    //System.out.println("Client:"+readStr);
    //在系统标准输出上打印读入的字符串
    System.out.println("Server:"+is.readLine());
    System.out.print("Client:");
    //从Server读入一字符串,并打印到标准输出上
    readStr=sin.readLine(); //从系统标准输入读入一字符串
   } //继续循环
   os.close(); //关闭Socket输出流
   is.close(); //关闭Socket输入流
   socket.close(); //关闭Socket
        }catch(Exception e){
         System.out.println("Error occur: "+ e);
        }
  
 }

}

上一篇:android 模拟器删除文件
下一篇:MOVSB MOVSW MOVSD