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

📄 servercommunicate.java

📁 java版虚拟社区,在mysql上运行.
💻 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 + -