Python_GoWithMe 发表于 2014-9-17 23:32:19

【原创-全仿QQ软件-附源代码】求评分打赏~

软件截图见这里:http://bbs.fishc.com/thread-52575-1-1.html
项目构建目录如下(该版本是后期的一个版本):


@小甲鱼说好的代码来了~{:7_115:}

Python_GoWithMe 发表于 2014-9-17 23:34:12

本帖最后由 Python_GoWithMe 于 2014-9-17 23:35 编辑

package com.skyqq2015.qq.client.biz;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;

import javax.swing.JTextArea;

import com.skyqq2015.qq.client.po.ClientPoint;


public class ClientManager {
        public static final int PORT = 7129;
        public static String IP=null;

        public static ClientPoint cp;
       

        /**
       * 连接服务器服务
       */
        public static void start() {
      
                Socket so = null;
                DataInputStream dis = null;
                DataOutputStream dos = null;
                try {
                        so = new Socket(IP, PORT);
                        System.out.println("连接到服务器……");
                        dis = new DataInputStream(new BufferedInputStream(
                                        so.getInputStream()));
                        dos = new DataOutputStream(new BufferedOutputStream(
                                        so.getOutputStream()));
                } catch (IOException e) {
                       
                }

                cp = new ClientPoint(so, dis, dos);
               
      

        }

        /**
       * 向客户端发送消息
       */
        public void send(final String msg) {
                if (cp != null) {
                        new Thread(new Runnable() {

                                @Override
                                public void run() {

                                        try {
                                                cp.getDos().writeUTF(msg);
                                                cp.getDos().flush();
                                        } catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }

                                }
                        }).start();
                }
        }

        /**
       * 接收消息
       */
        public void receive(JTextArea showMsgArea) {
                new Thread(new Receiver(showMsgArea)).start();
        }
        public ClientManager(String ip)
        {
                this.IP=ip;
               
        }
}
ClientManager.java //客户端

Python_GoWithMe 发表于 2014-9-17 23:37:16

本帖最后由 Python_GoWithMe 于 2014-9-17 23:40 编辑

package com.skyqq2015.qq.client.biz;

import java.io.IOException;

import javax.swing.JTextArea;

import com.skyqq2015.qq.client.po.ClientPoint;


public class Receiver implements Runnable {

      private JTextArea showMsgArea;
      
      public static boolean bool = true;
      
      public Receiver(JTextArea showMsgArea) {
                this.showMsgArea = showMsgArea;
      }
      
      @Override
      public void run() {
               
                ClientManager.start();
               
                while(bool){
                        System.out.println("==============");
                        String msg = null;
                        try {
                              msg = ClientManager.cp.getDis().readUTF();
                        } catch (IOException e) {
                              // TODO Auto-generated catch block
                              e.printStackTrace();
                        }
                        if(msg != null && !msg.isEmpty()){
                              showMsgArea.append(msg);
                        }
                }
      }

}
Receiver.java// 客户端message接受

Python_GoWithMe 发表于 2014-9-17 23:39:22

package com.skyqq2015.qq.server.biz;

import java.io.IOException;

import javax.swing.JTextArea;

import com.skyqq2015.qq.server.po.ServerPoint;

public class Receiver implements Runnable {

        private JTextArea showMsgArea;
       
        public static boolean bool = true;
       
        public Receiver(JTextArea showMsgArea) {
                this.showMsgArea = showMsgArea;
        }
       
        @Override
        public void run() {
               
                ServerManager.start();
               
                while(bool){
                        System.out.println("++++++++++++++");
                        String msg = null;
                        try {
                                msg = ServerManager.sp.getDis().readUTF();
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                        if(msg != null && !msg.isEmpty()){
                                showMsgArea.append(msg);
                        }
                }
        }

}
Receiver.java //消息接收

Python_GoWithMe 发表于 2014-9-17 23:41:10

package com.skyqq2015.qq.server.biz;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JTextArea;

import com.skyqq2015.qq.server.po.ServerPoint;

public class ServerManager {

        public static final int PORT = 7129;

        public static ServerPoint sp;


        public static void start() {

                Socket so = null;
                DataInputStream dis = null;
                DataOutputStream dos = null;
                try {
                        ServerSocket server = new ServerSocket(PORT);
                        System.out.println("服务器启动……");
                        so = server.accept();
                        System.out.println("有客户接入……");
                        dis = new DataInputStream(new BufferedInputStream(
                                        so.getInputStream()));
                        dos = new DataOutputStream(new BufferedOutputStream(
                                        so.getOutputStream()));
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }

                sp = new ServerPoint(so, dis, dos);

        }

        /**
       * 向客户端发送消息
       */
        public void send(final String msg) {
                if (sp != null) {
                        new Thread(new Runnable() {

                                @Override
                                public void run() {

                                        try {
                                                sp.getDos().writeUTF(msg);
                                                sp.getDos().flush();
                                        } catch (IOException e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }

                                }
                        }).start();
                }
        }

        /**
       * 接收消息
       */
        public void receive(JTextArea showMsgArea) {
                new Thread(new Receiver(showMsgArea)).start();
        }
}
ServerManager.java //服务器连接启动管理

Python_GoWithMe 发表于 2014-9-17 23:43:15

由于终极版本和jar丢失 只能找到这个了 也是接近完工的成品C/S交互模式由于这份注释太少 让人不好意思发了都量比较大 下次接着发 晚安{:7_115:}

Angel丶L 发表于 2014-9-17 23:45:54

强烈支持楼主ing……

~风介~ 发表于 2014-11-30 23:59:11

真是难得给力的帖子啊。
页: [1]
查看完整版本: 【原创-全仿QQ软件-附源代码】求评分打赏~