socket.io java 点对点_java socket点对点以及点对面编程实例

和socket编程有关的几个类:

InetAddress

Socket:用在客户端

ServerSocket:用在服务器端

一。点对点通信

服务器端:

package server; import java.io.*; import java.net.*; public class Server { private int port; public Server(int port){    this.port=port;    start(); } //将从客户端收到的信息转化为大写的 public String process(String line){    return line.toUpperCase(); } public void start(){    try{      //根据端口创建套接字      ServerSocket myscoket=new ServerSocket(port);      //显示连接信息      System.out.println("服务器启动完成,监听端口在"+port);      System.out.println("正在等待客户连接.........");      //挂起等待客户的请求      Socket connection=myscoket.accept();          //测试          System.out.println("客户发来连接请求.........");      //获取读取客户端的数据流      BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));      //获取写往客户端的数据输出流,true表示自动刷新      PrintWriter out=new PrintWriter(connection.getOutputStream(),true);      //向客户发送欢迎的信息      out.println("您好,服务器连接成功!");      out.println("输入bye断开与服务器的连接");      boolean done=false;      while(!done){        //读取客户端的内容        String line=in.readLine();        if(line==null){          done=true;        }else{          //从服务器端显示客户端发送的信息          System.out.println("从客户端来的内容"+line);          //信息处理          String message=process(line);          //向客户端发送信息          out.println("从服务器端口发送的信息"+message);          if(line.trim().equals("BYE"))            done=true;        }      }      //关闭通信      connection.close();    }catch(Exception e){      System.out.println(e);    } } } package server; public class ServerDemo {    /**    * @param args    */    public static void main(String[] args) {      // TODO Auto-generated method stub if(args.length!=1){    System.out.println("运行方式:java Server ");    return; } try{    //获得端口号    int port=Integer.parseInt(args[0]);    Server myserver=new Server(port); }catch(Exception e){    System.out.println(e); }    } }

客户端:

package client; import java.io.*; import java.net.*; public class Client { private String host; private int port; public Client(String host,int port){    this.host=host;    this.port=port;    connect(); } public void connect(){    try{      Socket connection;      if(host.equals("localhost"))      {connection=new Socket(InetAddress.getLocalHost(),port);}      else       { connection=new Socket(InetAddress.getByName(host),port);}      //获得从键盘输入流      BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));      //获得服务器写内容的数据流      PrintWriter out=new PrintWriter(connection.getOutputStream(),true);      //获得接收服务器发送内容的输入流      BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));      //从服务器获得欢迎信息      System.out.println("服务器信息:"+in.readLine());      System.out.println("服务器信息:"+in.readLine());      //提示用户输入      System.out.print("请输入>");      boolean done=false;      while(!done){        //从键盘上读取字符        String line=stdin.readLine();        //发送到服务端        out.println(line);        //如果读到bye则结束循环        if(line.equalsIgnoreCase("bye"))          done=true;        //从服务器读取字符串        String info=in.readLine();        //显示从服务器发送来的数据        System.out.println("服务器信息:"+info);        //提示用户输入        if(!done)          System.out.print("请输入>");      }      //关闭      connection.close();    }catch(SecurityException e){      System.out.println("连接服务器出现安全问题!");    }catch(IOException e){      System.out.println("连接服务器出现I/O错误!");    }    } } package client; public class ClientDemo {    /**    * @param args    */    public static void main(String[] args) {      // TODO Auto-generated method stub if(args.length!=2){    System.out.println("程序运行方式:java client ");    return; } String host=args[0]; try{    int port=Integer.parseInt(args[1]);    Client myserver=new Client(host,port); }catch(Exception e){    System.out.println(e); }    } }

二。点对面通信

服务端:

package server; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server extends ServerSocket { private int port; //private Socket connection; public Server(int port)throws IOException{    super(port);    this.port=port;    System.out.println("服务器启动完成,监听端口在"+port);    System.out.println("正在等待客户连接.....");    try{    while(true){      //挂起,直到客户请求      Socket connection=accept();      //建立服务线程      new ServerThread(connection,port);    }    }catch(IOException e){      System.out.println(e);    }finally{      close();    } } } package server; import java.io.*; import java.net.*; public class ServerThread extends Thread{ private int port; private Socket connection; private BufferedReader in; private PrintWriter out; public ServerThread(Socket s,int port)throws IOException{    this.port=port;    this.connection=s;    //获取读取客户端的数据流 in=new BufferedReader(new InputStreamReader(connection.getInputStream (),"gb2312"));    //获取写往客户端的数据输出流,true表示自动刷新    out=new PrintWriter(connection.getOutputStream(),true);    //向客户发送欢迎的信息    out.println("您好,服务器连接成功!");    out.println("输入bye断开与服务器的连接");    //启动线程    start(); } //将从客户端收到的信息转化为大写的 public String process(String line){    return line.toUpperCase(); } public void run(){    try{      boolean done=false;      while(!done){        String line=in.readLine();        if(line==null)          done=true;        else{                  if(line.trim().equals("bye"))            done=true;          System.out.println("从客户端来的内容"+line);          String message=process(line);          out.println("从服务器端口发出的内容"+message);        }      } System.out.println("bye bye!");      //关闭通信      connection.close();    }catch(Exception e){      System.out.println(e);    } } } package server; public class ServerDemo {    /**    * @param args    */    public static void main(String[] args) {      // TODO Auto-generated method stub if(args.length!=1){    System.out.println("运行方式:java Server ");    return; } try{    //获得端口号    int port=Integer.parseInt(args[0]);    Server myserver=new Server(port); }catch(Exception e){    System.out.println(e); }    } }

客户端:

package client; import java.io.*; import java.net.*; public class Client { private String host; private int port; public Client(String host,int port){    this.host=host;    this.port=port;    connect(); } public void connect(){    try{      Socket connection;      if(host.equals("localhost"))        connection=new Socket(InetAddress.getLocalHost(),port);      else       connection=new Socket(InetAddress.getByName(host),port);      //获得从键盘输入流      BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));      //获得服务器写内容的数据流      PrintWriter out=new PrintWriter(connection.getOutputStream(),true);      //获得接收服务器发送内容的输入流      BufferedReader in=new BufferedReader(new InputStreamReader(connection.getInputStream()));      //从服务器获得欢迎信息      System.out.println("服务器信息:"+in.readLine());      System.out.println("服务器信息:"+in.readLine());      //提示用户输入      System.out.print("请输入>");      boolean done=false;      while(!done){        //从键盘上读取字符        String line=stdin.readLine();        //发送到服务端        out.println(line);        //如果读到bye则结束循环        if(line.equalsIgnoreCase("bye"))          done=true;        //从服务器读取字符串        String info=in.readLine();        //显示从服务器发送来的数据        System.out.println("服务器信息:"+info);        //提示用户输入        if(!done)          System.out.print("请输入>");      }      //关闭      connection.close();    }catch(SecurityException e){      System.out.println("连接服务器出现安全问题!");    }catch(IOException e){      System.out.println("连接服务器出现I/O错误!");    }    } } package client; public class ClientDemo {    /**    * @param args    */    public static void main(String[] args) {      // TODO Auto-generated method stub if(args.length!=2){    System.out.println("程序运行方式:java client ");    return; } String host=args[0]; try{    int port=Integer.parseInt(args[1]);    Client myserver=new Client(host,port); }catch(Exception e){    System.out.println(e); }    } }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值