A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Aaron9527 中级黑马   /  2016-6-8 23:58  /  674 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package cn.itcast.点对点实现多线程聊天;

  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.net.Socket;
  5. import java.util.Scanner;

  6. public class Client {
  7.         public static void main(String[] args) throws Exception{
  8.                 Scanner sc = new Scanner(System.in);
  9.                 Socket socket = new Socket("127.0.0.1",8888);
  10.                 System.out.println("欢迎登陆熊熊客户端,祝您聊的开心!");
  11.                 OutputStream out = socket.getOutputStream();
  12.                
  13.                 new ClientThread(socket).start();
  14.                 //InputStream intput = socket.getInputStream();
  15.         //        byte [] byteArray = new byte[1024];//不必每次都创建一个长度为1024的数组,
  16.                 //它是不断的读取写入,所以只需要一个就够了
  17.         //        int len = 0;
  18.                 while(true){
  19.                         System.out.println("键盘轻点,距离不再遥远,对服务器说点什么吧!");
  20.                         String str = sc.next();
  21.                         out.write(str.getBytes());
  22.                         if(str.equals("over")){
  23.                                 break;
  24.                         }
  25.         //                len = intput.read(byteArray);
  26.         //                str = new String(byteArray,0,len);
  27.         //                System.out.println("服务器悄悄对你说:"+"\r\n"+str);
  28.                        
  29.                 }
  30.                 System.out.println("客户端结束,下次要记得熊熊噢~");
  31.                 System.exit(0);
  32.                 socket.close();
  33.                
  34.         }
  35. }


  36. package cn.itcast.点对点实现多线程聊天;

  37. import java.io.OutputStream;
  38. import java.net.ServerSocket;
  39. import java.net.Socket;
  40. import java.util.Scanner;
  41. public class Server {
  42.         public static void main(String[] args) throws Exception{
  43.                 Scanner sc = new Scanner(System.in);
  44.                 ServerSocket server = new ServerSocket(8888);
  45.                 Socket socket = server.accept();
  46.                 System.out.println("欢迎登陆熊熊服务器,祝您聊的开心~");
  47.         //        InputStream input = socker.getInputStream();
  48.                 OutputStream output = socket.getOutputStream();
  49.                 new ServerThread(socket).start();
  50.         //        byte [] byteArray = new byte[1024];
  51.         //        int len =0;
  52.                 while(true){
  53.                         //读取从客户端来的数据
  54.         //                len=input.read(byteArray);
  55.         //                String str = new String(byteArray,0,len);
  56.         //                System.out.println("客户端悄悄对你说"+"\r\n"+str);
  57.                        
  58.                         System.out.println("键盘轻点,距离不再遥远,对客户端说点什么吧!");
  59.                         String        str =sc.next();
  60.                         output.write(str.getBytes());
  61.                         if(str.equals("over")){
  62.                                 break;
  63.                         }
  64.                
  65.                        
  66.                 }
  67.                 System.out.println("客户端结束,下次要记得熊熊噢~");
  68.                 System.exit(0);
  69.                 socket.close();
  70.                 server.close();
  71.         }
  72. }


  73. package cn.itcast.点对点实现多线程聊天;

  74. import java.io.IOException;
  75. import java.io.InputStream;
  76. import java.net.Socket;

  77. /*
  78. * 客户端线程:
  79. *                 主要职责:从网络接收数据
  80. * */
  81. public class ClientThread extends Thread {
  82.         // 我需要接收数据,就需要Socket,这里得想办法搞出一个Socket对象
  83.         private Socket socket;

  84.         public ClientThread(Socket socket) {
  85.                 this.socket = socket;
  86.         }

  87.         public void run() {
  88.                 try {
  89.                         InputStream input = socket.getInputStream();
  90.                         int len = 0;
  91.                         byte[] byteArray = new byte[1024];
  92.                         while (true) {
  93.                                 len = input.read(byteArray);
  94.                                 String str = new String(byteArray, 0, len);
  95.                                 System.out.println("有来自服务端的新消息:" + "\r\n" + str);
  96.                                 if (str.equals("over")) {
  97.                                         System.out.println("客户端结束,下次要记得熊熊噢~");
  98.                                         System.exit(0);
  99.                                 }
  100.                         }
  101.                 } catch (IOException e) {
  102.                         e.printStackTrace();
  103.                 }
  104.         }
  105. }


  106. package cn.itcast.点对点实现多线程聊天;

  107. import java.io.IOException;
  108. import java.io.InputStream;
  109. import java.net.Socket;

  110. /*
  111. * 服务端:接收数据
  112. * */
  113. public class ServerThread extends Thread{
  114.         private Socket socket;
  115.         public ServerThread(Socket socket){
  116.                 this.socket=socket;
  117.         }
  118.         public void run(){
  119.                 try {
  120.                         InputStream input = socket.getInputStream();
  121.                         int len =0;
  122.                         byte [] byteArray = new byte[1024];
  123.                         while(true){
  124.                                 len = input.read(byteArray);
  125.                                 String str = new String(byteArray,0,len);
  126.                                 System.out.println("有来自客户端的新消息:" + "\r\n" + str);
  127.                                 if(str.equals("over")){
  128.                                         System.out.println("客户端结束,下次要记得熊熊噢~");
  129.                                         System.exit(0);
  130.                                 }
  131.                         }
  132.                 } catch (IOException e) {
  133.                         e.printStackTrace();
  134.                 }
  135.         }
  136. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马