webservice能做聊天程序吗?

dfg5646 2014-08-30 05:28:48
webservice能做聊天程序吗?
学了一星期的WCF,感觉太难了,内容太多,放弃了。
我只想做这两点事情:把数据库连接字符串放在服务器上、聊天程序
不知道学webservice能达到吗?
学了一些Socket编程,不知道能否用得上呢
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
我叫小菜菜 2014-08-31
  • 打赏
  • 举报
回复
引用 3 楼 dfg5646 的回复:
怎么尽是遇到一些哲学家啊。我不会做界面,会问这些问题吗?
数据库连接字符串,放哪里都行吧。只要你能获取就行。但出于安全性考虑,一般都是放在服务器的配置文件中。 webserver,看名字就大概可以认为是一种网络服务,只提供服务,不处理逻辑! 聊天程序,显然要使用socket才能进行网络通信啊。 既然你都会做界面,干嘛还问这样的问题呢?一个会做界面的程序员,肯定学过后台数据处理(就是那个dos黑窗口)。除非你所谓的“会做界面”是指使用PS等画图工具,而不是编程控件。
我叫小菜菜 2014-08-31
  • 打赏
  • 举报
回复
链接下载:Java swing聊天程序
我叫小菜菜 2014-08-31
  • 打赏
  • 举报
回复
附上一个java写的聊天程序,蛮简单的。省去了import,而且好多都是拖放控件生成的代码。

public class Client extends JFrame implements ActionListener {

    JPanel contentPane;
    JLabel jLabel1 = new JLabel();
    JLabel jLabel2 = new JLabel();
    JLabel jLabel3 = new JLabel();
    JTextField jTextField_server = new JTextField("127.0.0.1");
    JTextField jTextField_port = new JTextField("4700");
    JTextField jTextField_message = new JTextField();
    JButton jButton_connect = new JButton();
    JButton jButton_send = new JButton();
    //建立一个新的JScrollPane对象,当组件大于显示区域时会自动产生滚动轴
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea jTextArea_show = new JTextArea();
    BufferedReader instr = null;
    Socket socket = null;
    PrintWriter os = null;

    public Client() {
        jbInit();//初始化
    }
    //连接

    private void connectServer(String ip, int port) {
        try {
            if (jButton_connect.getText().trim().equals("连接")) {
                jButton_connect.setText("连接服务器...");
                socket = new Socket(ip, port);
                jButton_connect.setText("正在聊天");
                MyThread t = new MyThread();
                t.start();
            }
        } catch (Exception ex) {
            /*null*/
        }
    }
    //发送数据

    private void sendData(String s) {
        try {
            os = new PrintWriter(socket.getOutputStream());
            os.println(s);
            os.flush();
            this.jTextArea_show.append("客户端:" + s + "\n");
            jTextField_message.setText("");
        } catch (Exception e) {
            /*null*/
        }
    }

    class MyThread extends Thread {

        @Override
        public void run() {
            try {
                os = new PrintWriter(socket.getOutputStream());
                instr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                while (true) {
                    this.sleep(100);
                    if (instr.ready()) {
                        jTextArea_show.append("服务器:" + instr.readLine() + "\n");
                    }
                }

            } catch (Exception e) {
                /*null*/
            }
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jButton_connect) {
            //连接
            String ip = jTextField_message.getText().trim();
            int port = Integer.parseInt(jTextField_port.getText().trim());
            connectServer(ip, port);
        }
        if (e.getSource() == jButton_send) {
            //发送
            String s = this.jTextField_message.getText().trim();
            sendData(s);
        }
    }

    private void jbInit() {
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(null);

        jLabel1.setFont(new Font("宋体", 0, 14));
        jLabel1.setText("服务器名称");
        jLabel1.setBounds(new Rectangle(20, 22, 87, 28));

        this.setSize(new Dimension(540, 340));//设置宽度和高度
        this.setTitle("客户端");

        jTextArea_show.setEditable(false);
        jTextField_server.setBounds(new Rectangle(114, 26, 108, 24));

        jLabel2.setBounds(new Rectangle(250, 25, 72, 28));
        jLabel2.setFont(new Font("宋体", 0, 14));
        jLabel2.setText("端口号");

        jTextField_port.setBounds(new Rectangle(320, 27, 108, 24));

        jButton_connect.setBounds(new Rectangle(440, 28, 73, 25));
        jButton_connect.setFont(new Font("Dialog", 0, 14));
        jButton_connect.setBorder(BorderFactory.createEtchedBorder());
        jButton_connect.setActionCommand("jButton1");
        jButton_connect.setText("连接");

        jLabel3.setBounds(new Rectangle(27, 57, 87, 28));
        jLabel3.setText("请输入信息");
        jLabel3.setFont(new Font("宋体", 0, 14));

        jTextField_message.setBounds(new Rectangle(114, 60, 314, 24));

        jButton_send.setText("发送");
        jButton_send.setActionCommand("jButton1");
        jButton_send.setBorder(BorderFactory.createEtchedBorder());
        jButton_send.setBounds(new Rectangle(440, 58, 73, 25));
        jButton_send.setFont(new Font("Dialog", 0, 14));

        jScrollPane1.setBounds(new Rectangle(23, 92, 493, 189));

        contentPane.add(jLabel1, null);
        contentPane.add(jTextField_server, null);
        contentPane.add(jLabel2, null);
        contentPane.add(jTextField_port, null);
        contentPane.add(jButton_connect, null);
        contentPane.add(jLabel3, null);
        contentPane.add(jTextField_message, null);
        contentPane.add(jButton_send, null);
        contentPane.add(jScrollPane1, null);
        jScrollPane1.getViewport().add(jTextArea_show, null);
        jButton_connect.addActionListener(this);
        jButton_send.addActionListener(this);

        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {

                try {
                    socket.close();
                    instr.close();
                    os.close();;
                    System.exit(0);
                } catch (Exception ex) {
                    /*null*/
                }
            }
        });
    }

    public static void main(String arg[]) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        Client frm = new Client();
        frm.setVisible(true);
    }
}

public class Server extends JFrame implements ActionListener {

    JPanel contentPane;
    JLabel jLabe2 = new JLabel();
    JTextField jTextField2 = new JTextField("4700");
    JButton jButton1 = new JButton();
    JLabel jLabel3 = new JLabel();
    JTextField jTextField3 = new JTextField();
    JButton jButton2 = new JButton();
    JScrollPane jScrollPane1 = new JScrollPane();
    JTextArea jTextArea1 = new JTextArea();
    ServerSocket server = null;
    Socket socket = null;
    BufferedReader instr = null;
    PrintWriter os = null;
    //创建frame

    public Server() {
        jbInit();
    }
    //侦听端口

    private void ListenClient(int port) {
        try {
            if (jButton1.getText().trim().equals("侦听")) {
                server = new ServerSocket(port);
                jButton1.setText("正在侦听...");
                socket = server.accept();//等待,一直到客户端连接成功才继续执行
                sendData("已经成功连接...");
                jButton1.setText("正在聊天..");
                jTextArea1.append("客户端已经连接到服务器\n");
                MyThread t = new MyThread();
                t.start();
            }
        } catch (Exception e) {
        }
    }
    //发送数据

    private void sendData(String s) {
        try {
            os = new PrintWriter(socket.getOutputStream());
            os.println(s);
            os.flush();
            if (!s.equals("已经成功连接...")) {
                this.jTextArea1.append("服务器:" + s + "\n");
                jTextField3.setText("");
            }
        } catch (Exception e) {
        }
    }
    //该线程负责接收数据

    class MyThread extends Thread {

        public void run() {
            try {
                while (true) {
                    this.sleep(100);
                    instr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    if (instr.ready()) {
                        //检查接收数据
                        jTextArea1.append("客户端:" + instr.readLine() + "\n");
                    }
                }
            } catch (Exception ex) {
            }
        }
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jButton1) {
            int port = Integer.parseInt(jTextField2.getText().trim());
            ListenClient(port);
        }
        if (e.getSource() == jButton2) {
            String s = this.jTextField3.getText().trim();
            sendData(s);
        }
    }
    //初始化,构造函数调用此函数
    private void jbInit() {
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(null);
        this.setSize(new Dimension(540, 340));
        this.setTitle("服务器");

        jLabe2.setBounds(new Rectangle(22, 27, 73, 28));
        jLabe2.setText("端口号");
        jLabe2.setFont(new Font("宋体", 0, 14));

        jTextField2.setBounds(new Rectangle(113, 27, 315, 24));

        jButton1.setBounds(new Rectangle(440, 28, 73, 25));
        jButton1.setFont(new Font("Dialog", 0, 14));
        jButton1.setBorder(BorderFactory.createEtchedBorder());
        jButton1.setActionCommand("jButton1");
        jButton1.setText("侦听");

        jLabel3.setBounds(new Rectangle(23, 57, 87, 28));
        jLabel3.setText("请输入信息");
        jLabel3.setFont(new Font("宋体", 0, 14));

        jTextField3.setBounds(new Rectangle(114, 60, 314, 24));
        jTextField3.setText("");
        jTextArea1.setEditable(false);

        jButton2.setText("发送");
        jButton2.setActionCommand("jButton2");
        jButton2.setBorder(BorderFactory.createEtchedBorder());
        jButton2.setFont(new Font("Dialog", 0, 14));
        jButton2.setBounds(new Rectangle(440, 58, 73, 25));

        jScrollPane1.setBounds(new Rectangle(23, 92, 493, 189));

        contentPane.add(jTextField2, null);
        contentPane.add(jButton1, null);
        contentPane.add(jLabel3, null);
        contentPane.add(jTextField3, null);
        contentPane.add(jButton2, null);
        contentPane.add(jScrollPane1, null);
        contentPane.add(jLabe2, null);
        jScrollPane1.getViewport().add(jTextArea1, null);
        jButton1.addActionListener(this);
        jButton2.addActionListener(this);
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                try {
                    socket.close();
                    instr.close();
                    System.exit(0);
                } catch (Exception ex) {
                }
            }
        });
    }

    public static void main(String arg[]) {
        JFrame.setDefaultLookAndFeelDecorated(true);
        Server frm = new Server();
        frm.setVisible(true);
    }
}
threenewbee 2014-08-30
  • 打赏
  • 举报
回复
http://bbs.csdn.net/topics/390435061
bdmh 2014-08-30
  • 打赏
  • 举报
回复
告诉你能和不能,你又能怎样,我们说能你就去研究,不能你就不看了?少问这些没意义的问题,花点时间动动手
dfg5646 2014-08-30
  • 打赏
  • 举报
回复
怎么尽是遇到一些哲学家啊。我不会做界面,会问这些问题吗?
  • 打赏
  • 举报
回复
你应该学习3年,再说这些话。 否则,我建议你放弃。 我们公司有人花了一两万块钱去培训,被培训学校忽悠完毕之后再来公司实习带转正工作一年,而编程方面也还是实习水平。 因此别想着靠什么“捷径”就去开发“聊天程序”了。你见过那个正规大学的课程是以这种“技能”为目标的?只有什么“黑x培训”之类的才会以这种死记硬背垃圾代码为目标,而不是以教学质量为目标(他们的毕业、发毕业证书的标准是全世界最低的)。
EdsionWang 2014-08-30
  • 打赏
  • 举报
回复
这问题问的。光有个WebService就能做聊天程序了?你不需要界面?不需要通信?不需要用户数据管理? 这么一下子就放弃了,干嘛还开始学呢
PowerTalk控件的好处: 免费开源,使用者可以放心大胆的使用,控件源代码提供丰富的中文注释,可以使使用者看到内核原理. 二次开发性强,控件提供很多属性,接口,以及事件,开发者可以根据自己的需要,任意改装,包括外观,内部存储信息方式,比如数据库或txt等. 系统跑在自己的服务器上,这就不用担心使用其他网站IM带来的干扰影响,并且还是免费的. 现成示例多,开发者可以根据需要改程序,而不要花很长时间去重新设计,省时省力 程序里有精灵的提示程序,如果想使精灵发声说话,请在系统里安装Microsoft Speech SDK 5.1.msi, 在打上中文语言包,就可以帮您读出聊天中文内容。 客户端交互是使用WebService技术,WebService文件在源代码->Chat->PowerTalk-FetionInterFace.asmx,所以才配置PowerTalkClient.exe.config 本示例项目是单客服与多个客户之间的聊天,如果想更改成多个客服,只要注意两个地方即可。 WinForm下PowerTalkClient客户端LoginFrm.cs的登录框this.textBox1.Text = "在线客服";,上面默认是 "在线客服" WebForm下Web端PowerTalk/IM/Chat.aspx.cs的string WebServiceAnser = "在线客服", 上面默认是 "在线客服" "在线客服"这两个对应上即可多一个客服 比如,你的数据库里的名是 客服1,客服2,.....等等,利用程序把上面的"在线客服"替换即可利用客服1进行交谈。 客户端文件夹中含客户端管理系统。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧