📄 mp_server.java
字号:
import javax.swing.*;
import java.nio.*;
import java.nio.channels.FileChannel;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import java.util.*;
public class MP_Server extends JFrame implements ActionListener{
JButton bclear = new JButton("Clear");
JButton bclose = new JButton("Close");
JLabel statusLabel = new JLabel("current status:");
JLabel detailLabel = new JLabel("last message details:");
JLabel numberotLabel = new JLabel("number of messages over time:");
JLabel numberppLabel = new JLabel("number of messages per phone number:");
JLabel physizeLabel = new JLabel("physical size of messages received:");
JLabel cnumberLabel = new JLabel("current number:");
public static JTextField numberot = new JTextField(20);
public static JTextField numberpp = new JTextField(20);
public static JTextField physize = new JTextField(20);
public static JTextArea status = new JTextArea(6,20);
public static JTextArea detail = new JTextArea(6,20);
JScrollPane statusSc = new JScrollPane(status,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
JScrollPane detailSc = new JScrollPane(detail,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
public static JComboBox currentnumber = new JComboBox(new String[]{new String("0000")});
public static Vector TheMessageServerVector= new Vector(100,100);
public static Vector TheMessageServerNumberVector= new Vector(10,10);
public static int messagenumber=0;
public static long messagesize=0;
public MP_Server(){
super ("Message Server");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300,225,260,550);
JPanel pane = new JPanel();
pane.add(statusLabel);
pane.add(statusSc);
pane.add(detailLabel);
pane.add(detailSc);
pane.add(numberotLabel);
pane.add(numberot);
pane.add(numberppLabel);
pane.add(numberpp);
pane.add(physizeLabel);
pane.add(physize);
currentnumber.setEditable(true);
pane.add(cnumberLabel);
pane.add(currentnumber);
pane.add(bclear);
pane.add(bclose);
bclear.addActionListener(this);
bclose.addActionListener(this);
setContentPane(pane);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource().equals(bclear))
{
status.setText("\0");
}
if (e.getSource().equals(bclose))
{
this.storemessage();
System.exit(0);
}
}
public void storemessage()
{
String dirname ="d:/dw/workspace/Phone Message sending";
String filename ="data.txt";
int datanumber=TheMessageServerVector.size()*3;
String[] data = new String[datanumber];
for (int i=0,j=0;i<TheMessageServerVector.size();i++)
{
data[j]=((Message)TheMessageServerVector.get(i)).getmynumber();
j++;
data[j]=((Message)TheMessageServerVector.get(i)).getMessagetext();
j++;
data[j]=((Message)TheMessageServerVector.get(i)).getoppositenumber();
j++;
}
for(int j=0; j<datanumber;j++)
{
File dir = new File (dirname);
if(!dir.exists())
{
if(!dir.mkdir())
{
System.err.println("Cannot create directory: "+dirname);
System.exit(1);
}
}
else if (!dir.isDirectory())
{
System.err.println(dirname+" is not a directory !");
System.exit(1);
}
// Create the filestream
File aFile = new File(dir,filename);
FileOutputStream outputFile=null;
try
{
outputFile = new FileOutputStream(aFile, true);
System.out.println("File stream created successfully !");
}
catch(FileNotFoundException e)
{
e.printStackTrace(System.err);
}
//Create the file output stream channel
FileChannel outChannel = outputFile.getChannel();
ByteBuffer buf =ByteBuffer.allocate(1024);
for(int i=0; i<data[j].length();i++)
{
buf.putChar(data[j].charAt(i));
}
buf.flip();
//Writ the file
try
{
outChannel.write(buf);
outputFile.close();
}
catch(IOException e)
{
e.printStackTrace(System.err);
}
}
System.exit(0);
}
public static void main(String args[])
{
MP_Server ms=new MP_Server();
ServerSocket serverSocket = null;
ms.getContentPane().setBackground(Color.ORANGE);
try
{
serverSocket = new ServerSocket(5050);
MP_Server.status.setText(MP_Server.status.getText()+
"Server has started listening on port 5050\n");
}
catch (IOException e)
{
MP_Server.status.setText(MP_Server.status.getText()+
"Error: Cannot listen on port 5050: " + e+"\n");
System.exit(1);
}
while (true) // infinite loop wait for client
{
Socket clientSocket = null;
try
{
//waits here (forever) until a client connects
clientSocket = serverSocket.accept();
MP_Server.status.setText(MP_Server.status.getText()+
"Server has just accepted socketconnection from a client\n");
}
catch (IOException e)
{
MP_Server.status.setText(MP_Server.status.getText()+
"Accept failed: 5050 " + e+"\n");
break;
}
// Create the Handle Connection object use
Handleconnection con = new Handleconnection(clientSocket);
if (con == null) //If it failed send and error message
{
try
{
ObjectOutputStream os = new ObjectOutputStream(clientSocket.getOutputStream());
os.writeObject("error: Cannot open socket thread");
os.flush();
os.close();
}
catch (Exception ex) //failed to even send an error message
{
MP_Server.status.setText(MP_Server.status.getText()
+"Cannot send error back to client: 5050 " + ex);
}
}
else {
con.start();
}//otherwise we have not failed to create the HandleConnection object
//run it now.
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -