给个思路!
我有已经做了这么一个东西.有点像聊天程序.
import Mypackage.ComputerManagement2;
import ServerGUI.ServerGUI;
import java.net.*;
import java.io.*;
import java.util.*;
public class ComputerManagement {
protected ServerGUI gui;
public ComputerManagement(int port) throws IOException{
gui=new ServerGUI();
gui.setBounds(100,100,470,400);
gui.show();
ServerSocket server= new ServerSocket(port);
while(true){
Socket client=server.accept();
gui.addMessageToTextArea("来自于"+client.getInetAddress()+"客户端加入\n");
ComputerManagement2 C=new ComputerManagement2(client,gui);
C.start();
}
}
public static void main(String args[])throws IOException{
new ComputerManagement(3030);
}
}
这是服务器开始的地方,为每个连接创建套接字.
******************************************************************************888
package Mypackage;
import java.net.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import InterfaceOfClass.InterfaceOfClass;
import ServerGUI.ServerGUI;
public class ComputerManagement2 extends Thread {
Socket socket;
DataInputStream in;
DataOutputStream out;
ServerGUI gui;
protected static Vector Computers=new Vector();
public ComputerManagement2 (Socket socket,ServerGUI gui) throws IOException {
this.socket = socket;
this.gui=gui;
in = new DataInputStream (new BufferedInputStream (socket.getInputStream()));
out = new DataOutputStream (new BufferedOutputStream (socket.getOutputStream()));
}
public void run () {
int count=0;
InterfaceOfClass ForTask=null;
Computers.addElement(this);
Enumeration projects=InterfaceOfClass.returnHash().elements();
Enumeration projects1=InterfaceOfClass.returnHash().elements();
while(projects.hasMoreElements())
{count++;projects.nextElement();}
try{
while(true){
String message=in.readUTF();
if(message.equals("Ready1"))
{gui.addMessageToTextArea("Ready1\n");
out.writeUTF((new Integer(count)).toString());
out.flush();
}
else if(message.equals("Ready2"))
for(int i=1;i<=count;i++)
{InterfaceOfClass ForSendName=(InterfaceOfClass)projects1.nextElement();
out.writeUTF(ForSendName.getProjectName());
out.flush();
}
else if(message.equals("RequestForTaskTheFirstTime"))
{String message1=in.readUTF();
ForTask=(InterfaceOfClass)InterfaceOfClass.returnHash().get(message1);
ForTask.setStream(in,out);
out.writeUTF(ForTask.getClassName());
out.flush();
gui.addMessageToTextArea(message1);
ForTask.SendClassBytesToClient();
gui.addMessageToTextArea("发送成功\n");
}
else if(message.equals("RequestForData"))
{ Class c1=ForTask.ServerClassInstance
Object c=ForTask.ServerInstance;
Class[] paramsCls=new Class[1];
paramsCls[0]=InterfaceOfClass.class;
Method method=c1.getMethod("set",paramsCls);
Object[] args=new Object[1];
args[0]=ForTask;
method.invoke(c,args);
Class[] paramsCls1=new Class[1];
paramsCls1[0]=java.lang.String.class;
Method method1=c1.getMethod("fortest2",paramsCls1);
Object[] args1=new Object[1];
args1[0]="测试";
method1.invoke(c,args1);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
gui.addMessageToTextArea("来自于"+socket.getInetAddress()+"客户端退出\n");
Computers.removeElement(this);
try{socket.close();}catch(IOException e){e.printStackTrace();}
this.stop();}
}//run
}
这是处理部分。包括了类动态加载(包括了很多类,每个都是独立的)。
==============================================================================
我现在的想法是被加载的类怎么利用这些套接字进行通信呢?(每个类都要拥有一些套接字)。
***************************************************************************************]
import Mypackage.ComputerManagement2;
import ServerGUI.ServerGUI;
import java.net.*;
import java.io.*;
import java.util.*;
public class ComputerManagement {
protected ServerGUI gui;
public ComputerManagement(int port) throws IOException{
gui=new ServerGUI();
gui.setBounds(100,100,470,400);
gui.show();
ServerSocket server= new ServerSocket(port);
while(true){
Socket client=server.accept();
gui.addMessageToTextArea("来自于"+client.getInetAddress()+"客户端加入\n");
ComputerManagement2 C=new ComputerManagement2(client,gui);
C.start();
}
}
public static void main(String args[])throws IOException{
new ComputerManagement(3030);
}
}
这是服务器开始的地方,为每个连接创建套接字.
******************************************************************************888
package Mypackage;
import java.net.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import InterfaceOfClass.InterfaceOfClass;
import ServerGUI.ServerGUI;
public class ComputerManagement2 extends Thread {
Socket socket;
DataInputStream in;
DataOutputStream out;
ServerGUI gui;
protected static Vector Computers=new Vector();
public ComputerManagement2 (Socket socket,ServerGUI gui) throws IOException {
this.socket = socket;
this.gui=gui;
in = new DataInputStream (new BufferedInputStream (socket.getInputStream()));
out = new DataOutputStream (new BufferedOutputStream (socket.getOutputStream()));
}
public void run () {
int count=0;
InterfaceOfClass ForTask=null;
Computers.addElement(this);
Enumeration projects=InterfaceOfClass.returnHash().elements();
Enumeration projects1=InterfaceOfClass.returnHash().elements();
while(projects.hasMoreElements())
{count++;projects.nextElement();}
try{
while(true){
String message=in.readUTF();
if(message.equals("Ready1"))
{gui.addMessageToTextArea("Ready1\n");
out.writeUTF((new Integer(count)).toString());
out.flush();
}
else if(message.equals("Ready2"))
for(int i=1;i<=count;i++)
{InterfaceOfClass ForSendName=(InterfaceOfClass)projects1.nextElement();
out.writeUTF(ForSendName.getProjectName());
out.flush();
}
else if(message.equals("RequestForTaskTheFirstTime"))
{String message1=in.readUTF();
ForTask=(InterfaceOfClass)InterfaceOfClass.returnHash().get(message1);
ForTask.setStream(in,out);
out.writeUTF(ForTask.getClassName());
out.flush();
gui.addMessageToTextArea(message1);
ForTask.SendClassBytesToClient();
gui.addMessageToTextArea("发送成功\n");
}
else if(message.equals("RequestForData"))
{ Class c1=ForTask.ServerClassInstance
Object c=ForTask.ServerInstance;
Class[] paramsCls=new Class[1];
paramsCls[0]=InterfaceOfClass.class;
Method method=c1.getMethod("set",paramsCls);
Object[] args=new Object[1];
args[0]=ForTask;
method.invoke(c,args);
Class[] paramsCls1=new Class[1];
paramsCls1[0]=java.lang.String.class;
Method method1=c1.getMethod("fortest2",paramsCls1);
Object[] args1=new Object[1];
args1[0]="测试";
method1.invoke(c,args1);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
gui.addMessageToTextArea("来自于"+socket.getInetAddress()+"客户端退出\n");
Computers.removeElement(this);
try{socket.close();}catch(IOException e){e.printStackTrace();}
this.stop();}
}//run
}
这是处理部分。包括了类动态加载(包括了很多类,每个都是独立的)。
==============================================================================
我现在的想法是被加载的类怎么利用这些套接字进行通信呢?(每个类都要拥有一些套接字)。
***************************************************************************************]
...全文
相关推荐
Discuz! 夜の思路
【标题】"Discuz! 夜の思路" 是一个基于 Discuz! 论坛系统的主题模板,它为网站提供了一种独特的视觉体验,特别是在夜间或暗色环境下的浏览。Discuz!
用ChatGPT批量生成爆款小红书!你从没见过的思维方式!且可以批量生成!含prompt的超级思路!
用ChatGPT批量生成爆款小红书!你从没见过的思维方式!且可以批量生成!含prompt的超级思路!ChatGPT作为AI领域最强的生产工具,在创作小红书,尤其是批量生成小红书爆款笔记方面来说,有着得
VC编写的一个益智小程序。超难!高分寻求用程序解题的方法或思路!
超难!高分寻求用程序解题的方法或思路!有想法的朋友可以与我联系:E-mail:chinajyh@yeah.net QQ: 5566922
2023五一赛A题思路解析!.mp4
2023五一赛A题思路解析!.mp4
反SPAM新思路—换Z-BLOG的验证码!
反SPAM新思路—换Z-BLOG的验证码!


Java SE
