⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverlistenthread.java

📁 注:语音聊天部分还未完成
💻 JAVA
字号:
package com.gamvan.club.users.im.server;import database.command.JDBCOperation;import java.awt.Color;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.net.ServerSocket;import java.sql.Connection;import javax.swing.JComboBox;import javax.swing.JOptionPane;import com.gamvan.club.users.im.tools.MyTextPane;public class ServerListenThread extends Thread {	/*	 * 此类用于侦听客户端的连接,响应客户端登陆的请求,并且为该用户启动专用的线程	 * 处理与此用户相关的操作	 */	ServerSocket server = null;//侦听套接字            ServerReceiveThread recevThread = null;//服务器接受线程	private MyTextPane chatMeg = null;//聊天信息框	private UserInfoList userInfoList = null;//用户信息列表	private SingleUserMegData clientData = null;//客户端的数据	private JComboBox userOnlineList = null;        private Connection con = null;	public boolean isStop;	public ServerListenThread(){}	public void run(){                                                       if(!server.isClosed()){                                        startListen();                            }	}	public void startListen(){//服务器侦听线程的执行体            while(!isStop&&!server.isClosed()){//如果套接字处于打开状态                try{                      clientData = new SingleUserMegData();                                                                      //监听客户端的连接                                                                     clientData.socket = server.accept();                                                                //得到套接字输出流                      clientData.dataOut = new ObjectOutputStream(                      clientData.socket.getOutputStream());                      //发送数据流头                      clientData.dataOut.flush();                      //得到套接字输入流                      clientData.dataIn = new ObjectInputStream(                            clientData.socket.getInputStream());                      //读取用户昵称                      clientData.msg = (String)clientData.dataIn.readObject();                      if(!clientData.msg.equals("login")&&!clientData.msg.equals("注册信息")){//                          clientData.userName=clientData.msg;                          userOnlineList.addItem(clientData.userName);                                                   chatMeg.append(Color.orange,"用户:" +                        		  clientData.userName + "上线…………" + "\n");                          userInfoList.add(clientData);                          //创建服务器接收线程                          recevThread = new ServerReceiveThread();                          recevThread.sendObject(chatMeg,clientData,                                                 userInfoList,userOnlineList);                          recevThread.start();                      }else if(clientData.msg.equals("login")){                    	  //在这里调用数据库连接方法                          	 String checkUserName = (String)clientData.dataIn.readObject();                    	 String recevPassword = (String) clientData.dataIn.readObject();                         //启动新线程,在数据库中检测用户名                         JDBCThread jt = new JDBCThread();                         jt.sendObject(clientData,checkUserName,recevPassword);                         jt.start();                                         }else if(clientData.msg.equalsIgnoreCase("注册信息")){                          //System.out.println("1234567890");                          //首先接受用户名和密码                          String username=(String)clientData.dataIn.readObject();                          String password=(String)clientData.dataIn.readObject();                                                    //接受其他用户注册信息                          String trueName=(String)clientData.dataIn.readObject();                          String country=(String)clientData.dataIn.readObject();                          String fav=(String)clientData.dataIn.readObject();                          String tel=(String)clientData.dataIn.readObject();                          //System.out.println(username+password+trueName+country+fav+tel);                          //将收到的内容填入数据库中                          //获得到数据库的连接                                                                                            con= JDBCOperation.connection("net.sourceforge.jtds.jdbc.Driver",                                                                                     "jdbc:jtds:sqlserver://127.0.0.1:1433/gamvantalk",                                                                                       "sa","123");                          boolean isMember=JDBCOperation.search_Mem(username,con);                          if(!isMember){//检测用户ID是否已经被人注册                                //调用插入数据的方法                                                     String result=JDBCOperation.insertValue("member",username,password,                                  trueName,country,fav,tel,con);                                if(result.equalsIgnoreCase("success")){                                                                clientData.dataOut.writeObject("注册成功");                                                                clientData.dataOut.flush();                                  con.close();                                }else{                                   clientData.dataOut.writeObject("注册失败");                                                                                                  clientData.dataOut.flush();                                       con.close();                                }                          }else{                               clientData.dataOut.writeObject("注册失败");                                                                                                                                 clientData.dataOut.flush();                                con.close();                          }                                                                      }                      if(server.isClosed()){                    	  recevThread.isStop = true;                      }                    }catch(Exception e){                        JOptionPane.showMessageDialog(null,"您已经关闭了侦听套接字!!",                                        "系统警告",JOptionPane.ERROR_MESSAGE);                        e.printStackTrace();                  }              }	}	public void sendObject(ServerSocket server,			                MyTextPane chatMeg, UserInfoList userInfoList,			                JComboBox userOnlineList){                         this.server = server;                         this.chatMeg = chatMeg;                          this.userInfoList = userInfoList;                         this.userOnlineList = userOnlineList;                         isStop = false;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -