📄 servercommunicate.java
字号:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;
import javax.swing.*;
import serverpack.Process;
import serverpack.MyMessage;
import serverpack.Monitor;
public class ServerCommunicate extends Thread{
private Socket socket;
private Scanner in;
private PrintStream out;
private Process pro;
private MyMessage mm;
private String id;
private Monitor mo;
boolean iflog;
public ServerCommunicate(Socket s,Monitor scmo)throws IOException
{
try
{
socket = s;
mo =scmo;
// in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
InputStream inStream=socket.getInputStream();
OutputStream outStream=socket.getOutputStream();
in=new Scanner(inStream);
out=new PrintStream(outStream);
mm = new MyMessage();
id = new String();
start();
}
catch(IOException e)
{
System.out.println("exception in ServerCommunicate");
e.printStackTrace();
}
}
public void GetMessage(MyMessage mm)
{
mm.SetType(in.nextLine());
int n = Integer.parseInt(in.nextLine());
mm.SetNum(n);
for(int i = 0;i < mm.GetNum();i++)mm.SetMes(in.nextLine(), i);
}
public void SendMessage(MyMessage mm)
{
String mn = "" + mm.GetNum();
out.println(mm.GetType());
out.println(mn);
for(int i = 0;i < mm.GetNum();i++)out.println(mm.GetMes(i));
}
public void run()
{
iflog = false;
Process pro = new Process(mo);/////////////////////////////////
System.out.println("thread run");
out.println("Virtual Community,connection success!");
try
{
while(in.hasNextLine())
{
System.out.println("Message receiving...");
GetMessage(mm);
System.out.println("Message received:"+ mm.GetType());
mo.appendmessage("Message received: "+ mm.GetType()+"\n");
if("Login".equals(mm.GetType()))
{
id = mm.GetMes(0);
iflog = false;
}
if(!pro.MessagePro(mm))
{
System.out.println("Error,failed to process message");
mo.appendmessage("Error,failed to process message"+"\n");
mm.SetType("error");
mm.SetNum(0);
}
if("LOGOK".equals(mm.GetType()))
{
iflog = true;
}
SendMessage(mm);
}//while
if(!("".equals(id)) && iflog)
{
iflog = false;
mm.SetType("Left");
mm.SetMes(id, 0);
pro.MessagePro(mm);
mo.appendmessage(id+" Left"+"\n");
}
else
{
mo.appendmessage("Thread left"+"\n");
}
System.out.println("Thread left"+"\n");
socket.close();
}
catch(Exception e)
{
try
{
System.out.println("exception in try run,forced to close thread...");
e.printStackTrace();
socket.close();
}
catch(IOException ein)
{
ein.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -