初学JAVA,很多不会
网上找了些例子,不全或太全,看不懂可以不需要界面
socket 多线程 对数据库mysql操作就是运行在服务器端的JAVA程序,接收很多客户端数据,用socket通信方式,并把数据插入到MYSQL中
网上找了些例子,不全或太全,看不懂可以不需要界面
socket 多线程 对数据库mysql操作就是运行在服务器端的JAVA程序,接收很多客户端数据,用socket通信方式,并把数据插入到MYSQL中
解决方案 »
- 配置了临时文件存储地了,为什么还是会被删掉呢
- 大并发的java容器选择
- 请问,我的myeclipse启动不了了,启动时总弹出一个对话框,说:jvm terminated. Exit code=1,下面还有一大串
- 关于IBATIS查询视图不出结果
- 在myeclipse环境下启动tomcat
- 字符串"2007-05-31 10:31:24"如何转化为2007年5月31日10点31分24秒
- 如何读取jar中的spring applicationcontext
- struts 404问题
- 大家来说说,java适合哪些行业的开发
- 走咯。51放假咯,大家开心咯,我散分咯。
- 下面代码会不会引起脏读,幻像读
- spring里的struts2在weblogic中的初始化问题
socket 链接到此server 用socketinput,output传输信息就行了
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() );
}
}
}