📄 appserver.java
字号:
/*
* AppServer.java
*
* Created on 2007年12月2日, 下午10:02
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package appserver;
//导入相关包
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.swing.Timer;
//AppServer类代码
public class AppServer implements Runnable
{
ServerSocket server;
Socket fromClient;
Thread serverThread;
public AppServer()
{
System.out.print("FunChat聊天服务器启动..........");
try
{
server = new ServerSocket(1001);
serverThread = new Thread(this);
serverThread.start();
}
catch (Exception e)
{
System.out.println("不能启动该线程: " + e);
}
}// AppServer结束
public static void main(String args[])
{
new AppServer();
}
public void run()
{
try
{
while (true)
{
//监听客户端的请求
fromClient = server.accept();
//建立连接对象
Connect con = new Connect(fromClient);
}
}
catch (Exception e)
{
System.out.println("不能监听客户请求" + e);
}
}
}
//connect类代码
class Connect
{
ObjectOutputStream streamToClient;
int ctr = 0;
BufferedReader streamFromClient;
static Vector vector;
static Vector vctrList;
String message = " ";
static String str = new String("用户列表");
static
{
vector = new Vector(1, 1);
vctrList = new Vector(1, 1);
vctrList.addElement((String)str);
}
int verify(String mesg)
{
try
{
RandomAccessFile RAS = new RandomAccessFile("UsrPwd.txt", "r");
int i = 0;
String str = "";
while ((RAS.getFilePointer()) != (RAS.length()))
{
str = RAS.readLine();
if (str.equals(mesg))
{
ctr = 1;
break;
}
}
RAS.close();
}
catch (Exception e)
{
System.out.println("由于查取信息时出错");
}
return ctr;
}//verify()函数结束
int checkFile(String mesg)
{
int chk = 1;
try
{
RandomAccessFile RS = new RandomAccessFile("UsrPwd.txt", "r");
int i = 0;
String str = "";
String colon = new String(":");
int index = ((String)mesg).lastIndexOf(colon);
String userName = (String)mesg.substring(0, index);
while ((RS.getFilePointer()) != (int)(RS.length()))
{
str = RS.readLine();
int index1 = ((String)str).lastIndexOf(colon);
String usrName = (String)str.substring(0, index1);
if (usrName.equals(userName))
{
chk = 0;
break;
}
}//while结束
RS.close();
}//try块结束
catch (Exception e)
{
}
return chk;
}//chkFile()函数结束
public Connect(Socket inFromClient)
{
//提取客户端的流
String msg = "";
String mesg = "";
try
{
streamFromClient = new BufferedReader(new InputStreamReader(inFromClient.getInputStream()));
streamToClient = new ObjectOutputStream(inFromClient.getOutputStream());
msg = streamFromClient.readLine();
//mesg=streamFromClient.readLine();
if ((msg.equals("Timer")))
{
streamToClient.writeObject(vector);
streamToClient.writeObject(vctrList);
}
else if (msg.equals("LoginInfo"))
{
msg = streamFromClient.readLine();
int ver = verify(msg);
if (ver == 1)
{
String colon = new String(":");
int index = ((String)msg).lastIndexOf(colon);
String userName = (String)msg.substring(0, index);
if (!(vctrList.indexOf((String)userName) > 0))
{
streamToClient.writeObject("Welcome");
vctrList.addElement((String)userName);
}
}
else
{
streamToClient.writeObject("Login Deny");
}
}
else if (msg.equals("RegisterInfo"))
{
msg = streamFromClient.readLine();
int ret = checkFile(msg);
if (ret == 0)
streamToClient.writeObject("User Exists");
if (ret == 1)
{
FileOutputStream out = new FileOutputStream("UsrPwd.txt", true);
PrintStream p = new PrintStream(out);
p.println();
p.println(msg);
p.close();
streamToClient.writeObject("Registered");
}
}
else if (msg.equals("User Logout"))
{
String remUser = streamFromClient.readLine();
boolean b = vctrList.removeElement((String)remUser);
}
else
{
message = message + msg;
vector.addElement((String)message);
streamToClient.writeObject(vector);
}
}//end of try
catch (Exception e)
{
System.out.println("无法获取客户端的流对象 " + e);
}
finally
{
try
{
inFromClient.close();
}
catch (IOException e)
{ }
}
}//Connect()函数结束
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -