📄 mysocketserver.java
字号:
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
public class MySocketServer //Java Application 主类
{
public static void main(String[] args)
{
ServerService MyServer=new ServerService(8000,10); //建立监听服务
}
}
class ServiceThread extends Frame implements Runnable
{//当Client有请求时,Server创建一个Frame用于与之交互数据
ServerService FatherListener; //创建当前通信线程的监听器对象
Socket ConnectedClient; //负责当前线程中C/S通信的Socket对象
Thread ConnectThread; //负责通信的线程
Panel ListenerPanel; //本次通信Server端的信息显示窗口
TextArea ServerMeg; //信息显示窗口的文本区域
public ServiceThread(ServerService sv,Socket s) //构造函数
{
FatherListener=sv;
ConnectedClient=s;
ConnectThread=new Thread(this);
setTitle("Answer Client"); //建立并显示Server端信息显示窗口
setLayout(new BorderLayout());
ServerMeg=new TextArea(10,50);
add("Center",ServerMeg);
setResizable(false); //不可改变窗口大小
pack();
show();
InetAddress ClientAddress=ConnectedClient.getInetAddress(); //获得请求服务的Client端计算机的IP地址
ServerMeg.appendText("Client connected"+"from\n"+ClientAddress.toString()+".\n");
}
public void run() //子线程任务:与Client端通信
{
try{
DataInputStream in=new DataInputStream( //获得从Client读人数据流
new BufferedInputStream(ConnectedClient.getInputStream()));
PrintStream out=new PrintStream( //获得向Client输入的数据流
new BufferedOutputStream(ConnectedClient.getOutputStream()));
out.println("Hello!Welcome connect to our server! \r");
out.flush();
String s=in.readLine();
String d=in.readLine();
int x=Integer.parseInt(s);
int y=Integer.parseInt(d);
int h=x+y;
int j=x-y;
int k=x*y;
int l=x/y;
while(true)
{
out.println("x"+"+"+"y"+"="+h+";"+"x"+"-"+"y"+"="+j+";"+"x"+"*"+"y"+"="+k+";"+"x"+"/"+"y"+"="+l+"\r");
out.flush();
}
}
catch(Exception e){}
FatherListener.addMeg("Client"+"close."+"\n");
dispose();
}//run()
}
class ServerService extends Frame
{
ServerSocket m_sListener;
TextArea ListenerMeg;
public ServerService(int Port,int Count)
{
try{
m_sListener=new ServerSocket(Port,Count);
setTitle("Server Listener");
this.addWindowListener(new WinAdpt());
setLayout(new BorderLayout());
ListenerMeg=new TextArea("监听服务已启动\n",10,50);
add("Center",ListenerMeg);
setResizable(false);
pack();
show();
while(true)
{
Socket Connected=m_sListener.accept();
InetAddress ClientAddress=Connected.getInetAddress();
ListenerMeg.appendText("Client"+"connected"+"from\n"+ClientAddress.toString()+".\n");
ServiceThread MyST=new ServiceThread(this,Connected);
MyST.ConnectThread.start();
}
}
catch(IOException e){}
}
public void addMeg(String s)
{
ListenerMeg.appendText(s);
}
}//ServerService Class
class WinAdpt extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
((Frame)e.getWindow()).dispose();
System.exit(0);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -