/** * 才疏学浅,现在只能是照搬书上的例子。
这个重在理解客户端与服务器端的交互。
/**
*
*/
package test1;
import java.awt.BorderLayout;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
/**
* @author 念
*
*/
public class Server extends JFrame {
/**
* @param args
*/
private JTextArea jta=new JTextArea();
public static void main(String[] args) {
// TODO Auto-generated method stub
new Server();
}
public Server(){
System.out.println("hello,world");
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(jta),BorderLayout.CENTER);
setTitle("Server");
setSize(500,300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
try {
ServerSocket serverSocket=new ServerSocket(18200);
//ServerSocket serverSocket=new ServerSocket("123.25.23.32","8000");
jta.append("Server started at "+new Date()+'\n');
//listen for a connect request
Socket socket=serverSocket.accept();
//create data input and output streams
DataInputStream inputFromClient = new DataInputStream(socket.getInputStream());
DataOutputStream outputtoClient = new DataOutputStream(socket.getOutputStream());
while(true){
double radius = inputFromClient.readDouble();
double area=radius*radius*Math.PI;
outputtoClient.writeDouble(area);
jta.append("Radius recieved from client:"+radius+'\n');
jta.append("Area found"+area+'\n');
}
} catch (IOException ex) {
// TODO: handle exception
System.err.println(ex);
System.out.println("maybe something is wrong.");
}
}
}