初学JAVA,很多不会
网上找了些例子,不全或太全,看不懂可以不需要界面
socket 多线程 对数据库mysql操作就是运行在服务器端的JAVA程序,接收很多客户端数据,用socket通信方式,并把数据插入到MYSQL中

解决方案 »

  1.   

    这么说你的程序不是web程序了。看起来像是作业。要不然用JMS做一个得了。serversocket开个端口
    socket 链接到此server  用socketinput,output传输信息就行了 
      

  2.   

    我写的是多个用户简单的一个聊天小功能,下面是客户端。package close.wubq;
    import java.applet.Applet;
    import java.awt.BorderLayout;
    import java.awt.Button;
    import java.awt.TextArea;
    import java.awt.TextField;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.URL;
    /**
     * 
     * @author closewubq
     *
     */
    public class ChatApplet extends Applet implements Runnable {
    TextArea m_textarea;
    TextField m_textfield;
    DataInputStream m_in;
    DataOutputStream m_out;
    public void init() {
    setLayout(null);
    setSize(426, 266);
    m_textarea = new TextArea(10, 10);
    m_textfield = new TextField();
    m_in = null;
    m_out = null;
    try {
    URL url = getCodeBase();
    InetAddress inetaddr = InetAddress.getByName(url.getHost());
    Socket m_socket;
    System.out.println("Server:" + inetaddr + "" + url.getHost() + ""
    + url.getProtocol());
    m_socket = new Socket(inetaddr, 5555);
    m_in = new DataInputStream(m_socket.getInputStream());
    m_out = new DataOutputStream(m_socket.getOutputStream());
    } catch (Exception e) {
    e.printStackTrace();
    }
    Button b=new Button("send");
    b.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
    String b = m_textfield.getText();
    m_textfield.setText("");
    try {
    m_out.writeUTF(b);
    } catch (IOException err) {
    }
    }});
    setLayout(new BorderLayout());
    add(BorderLayout.NORTH, m_textarea);
    add(BorderLayout.CENTER, m_textfield);
    add(BorderLayout.EAST,b);
    m_textarea.setEditable(false);
    Thread t=new Thread(this);
    t.setName("wubaoquan");
    t.start();
    }
    public void run() {
    try {
    while (true) {
    String s = m_in.readUTF();
    if (s != null) {
    m_textarea.append(s + "\n");
    }
    }
    } catch (Exception e) {
    m_textarea.append("Network problem or Server is down,\n");
    m_textfield.setVisible(false);
    } }
    public void stop() {
    try {
    m_out.writeUTF("leave");
    } catch (Exception e) {
    }
    }}服务器端,接受到消息后进行广播。package close.wubq;import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.Vector;
    /**
     * 
     * @author closewubq
     *
     */
    public class ChatServer { public static void main(String[] args) {
    ServerSocket socket = null;
    Vector<ServerThread> m_threads = new Vector<ServerThread>();
    System.out.println("服务器开始监听");
    try {
    socket = new ServerSocket(5555);
    } catch (Exception e) {
    System.out.println("郁闷,失败了!");
    return;
    }
    try {
    int nid = 0;
    while (true) {
    Socket s = socket.accept();
    System.out.println("accepted'");
    ServerThread st = new ServerThread(s, m_threads);
    st.setID(nid);
    m_threads.addElement(st);
    new Thread(st).start();
    for (int i = 0; i < m_threads.size(); i++) {
    ServerThread st1 = (ServerThread) m_threads.elementAt(i);
    st1.write("<#>welcome" + st.getID() + "to enter chatroom");
    }
    System.out.println("Listen again");
    }
    } catch (Exception e) {
    System.out.println("服务器关闭了");
    }
    }
    }线程类,在服务器端被调用,并且广播聊天记录,并且将聊天记录插入到mysql中。记得导入mysql包。package close.wubq;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.Socket;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.util.Vector;
    /**
     * 
     * @author closewubq
     *
     */
    public class ServerThread implements Runnable { Vector<ServerThread> m_threads;
    Socket m_socket = null;
    DataInputStream m_in = null;
    DataOutputStream m_out = null;
    int m_nid; public ServerThread(Socket s, Vector<ServerThread> threads) {
    m_socket = s;
    m_threads = threads;
    try {
    m_in = new DataInputStream(m_socket.getInputStream());
    m_out = new DataOutputStream(m_socket.getOutputStream());
    } catch (Exception e) { }
    }
    public void run() {
    System.out.println("我要开始插入mysql数据库了噢");
    try {
    while (true) {
    String s = m_in.readUTF();
    if (s == null)
    break;
    if (s.trim().equals("leave")) {
    for (int i = 0; i < m_threads.size(); i++) {
    ServerThread st = (ServerThread) m_threads.elementAt(i);
    st.write("***" + getID() + "leave..." + "****");
    }
    } else {
    for (int i = 0; i < m_threads.size(); i++) {
    ServerThread st = (ServerThread) m_threads.elementAt(i);
    st.write("<"+getID()+">"+s);
    DataInsertIntoMysql("<"+getID()+">"+s);
    }
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    m_threads.removeElement(this);
    try {
    m_socket.close();
    } catch (Exception e) {
    } }
    public void write(String msg) {
    synchronized (m_out) {
    try {
    m_out.writeUTF(msg);
    } catch (IOException e) { }
    }
    }
    public int getID() {
    return m_nid; }
    public void setID(int nid){
    m_nid=nid;
    }
    public synchronized void DataInsertIntoMysql(String data){
    try
         {
           Connection conn;
           Statement stmt;
           Class.forName("com.mysql.jdbc.Driver").newInstance();
           conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库",
                                             "用户名", "密码");
           stmt = conn.createStatement();
           stmt.executeUpdate("insert into tablename values("+data+")");
           conn.close();
         }
         catch (Exception ex)
         {
           System.out.println("数据库操作错误:"+ex.getMessage() );
         }
    }
    }