永发信息网

JAVA程序完成服务器和客户端的SOCKET通讯,要求服务器使用多线程接收和处理多个客户端访问请求

答案:2  悬赏:0  手机版
解决时间 2021-04-05 06:18
JAVA程序完成服务器和客户端的SOCKET通讯,要求服务器使用多线程接收和处理多个客户端访问请求
最佳答案
1. 客户端程序
  import java.io.*;
  import java.net.*;
  public class TalkClient {
    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对象
        String readline;
        readline=sin.readLine(); //从系统标准输入读入一字符串
        while(!readline.equals("bye")){
        //若从标准输入读入的字符串为 "bye"则停止循环
          os.println(readline);
          //将从系统标准输入读入的字符串输出到Server
          os.flush();
          //刷新输出流,使Server马上收到该字符串
          System.out.println("Client:"+readline);
          //在系统标准输出上打印读入的字符串
          System.out.println("Server:"+is.readLine());
          //从Server读入一字符串,并打印到标准输出上
          readline=sin.readLine(); //从系统标准输入读入一字符串
        } //继续循环
        os.close(); //关闭Socket输出流
        is.close(); //关闭Socket输入流
        socket.close(); //关闭Socket
      }catch(Exception e) {
        System.out.println("Error"+e); //出错,则打印出错信息
      }
  }
}
 2. 服务器端程序
  import java.io.*;
  import java.net.*;
  import java.applet.Applet;
  public class TalkServer{
    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);
        //出错,打印出错信息
        }
        Socket socket=null;
        try{
          socket=server.accept();
          //使用accept()阻塞等待客户请求,有客户
          //请求到来则产生一个Socket对象,并继续执行
        }catch(Exception e) {
          System.out.println("Error."+e);
          //出错,打印出错信息
        }
        String line;
        BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
         //由Socket对象得到输入流,并构造相应的BufferedReader对象
        PrintWriter os=newPrintWriter(socket.getOutputStream());
         //由Socket对象得到输出流,并构造PrintWriter对象
        BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
         //由系统标准输入设备构造BufferedReader对象
        System.out.println("Client:"+is.readLine());
        //在标准输出上打印从客户端读入的字符串
        line=sin.readLine();
        //从标准输入读入一字符串
        while(!line.equals("bye")){
        //如果该字符串为 "bye",则停止循环
          os.println(line);
          //向客户端输出该字符串
          os.flush();
          //刷新输出流,使Client马上收到该字符串
          System.out.println("Server:"+line);
          //在系统标准输出上打印读入的字符串
          System.out.println("Client:"+is.readLine());
          //从Client读入一字符串,并打印到标准输出上
          line=sin.readLine();
          //从系统标准输入读入一字符串
        }  //继续循环
        os.close(); //关闭Socket输出流
        is.close(); //关闭Socket输入流
        socket.close(); //关闭Socket
        server.close(); //关闭ServerSocket
      }catch(Exception e){
        System.out.println("Error:"+e);
        //出错,打印出错信息
      }
    }  }
全部回答
这种东西最好还是用mina能好些 ,简单快捷 ,思路清晰
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
下列各组物质名称不是同一物质的是A.烧碱、火
我今天23号收到基金公司的赎回交易确认,钱大
香辣炒青口的做法步骤图,香辣炒青口怎么做
还呗,用的人多吗,它的还款怎么还的,还有到
如何辨别白糯米的真假
陆金所哪个产品最安全,陆金所选什么理财产品
单选题AlthoughDavidisoverthirty,hest
诗与远方的诗歌,周杰伦唱得一首歌有一句歌词
佛以大圆觉,充满河沙河界。是什么意思?
马鞍山非机动车停车费怎么规定的
外籍男推女工被抓,"老外"还要被特殊对待多久
皮肤黑的女生适合戴什么颜色的手表?
我的汽车买了四个月了,但是最近发现慢撒气,
如何种植含羞草,含羞草怎么养?
圆钢长度是固定的9米吗还有其他米数吗
推荐资讯
苹果6S 4.7屏换屏后耗电或充不进电怎么回事呢
在线等,知情人进:上海平安集团社保管理岗
不要轻易说爱经典语录,轻易放火的经典语录
新疆拉条子的做法步骤图,新疆拉条子怎么做好
单选题Thestemsofbambooarehollow,_____
武汉市友谊路中学好吗
社会社义的核心价值观是什么
感冒咳嗽能剖腹产吗
蛋鸡120天 体重达标 应该怎么加光
电视剧炮神中饰演田招弟的演员是谁
接种流感疫苗后,人体内的________细胞会产生
美文是什么文章,文章的最后一句话与开头的第
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?