import java.net.*;
import java.io.*;public class SimpleCilent
{
public static void main(String[] args)
{
Socket cilent = null;
try
{
cilent = new Socket("192.168.0.14",8000);
if (cilent !=null )
{ InputStream s1 = cilent.getInputStream();
OutputStream s2 = cilent.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(s1));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s2));
PrintWriter print = new PrintWriter(output);
BufferedReader inputLine = new BufferedReader(new InputStreamReader(System.in));
while (true)
{
System.out.println("please enter content:");
String s = inputLine.readLine();
print.println(s);
print.flush(); if (s.equals("quit"))
{
break;
}
else
{
String i_line = input.readLine();
System.out.println(i_line);
}
} }
}
catch(Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (cilent !=null )
{
cilent.close(); } }
catch(Exception e1)
{
e1.printStackTrace();
} }
}
}
import java.net.*;
import java.io.*;
public class SingleServer
{
public static void main(String[] args)
{
ServerSocket server = null; int singleNumber; try
{
server = new ServerSocket(8000); Socket form = server.accept();//此方法实现数据传输(客户端套接字)
if (form != null)
{ System.out.println("start ...."+form);
InputStream s1 = form.getInputStream();
OutputStream s2 = form.getOutputStream(); BufferedReader input = new BufferedReader(new InputStreamReader(s1));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s2));
PrintWriter print = new PrintWriter(output);
while (true)
{
String s = input.readLine();
System.out.println("来自客户端消息-------"+s); if (s.equals("quit"))
{
break;
}
print.println("服务器收到的数据-----"+s); print.flush();
}
}
}
catch(Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (server !=null )
{
server.close();
System.out.println("服务端关闭");
} }
catch(Exception e1)
{
e1.printStackTrace();
} }
}
}
我应该怎么修改这个程序:来达到以下目的
一个多线程服务端用来计算圆面积,从客户端接受半径输入然后将计算结果返回给客户端
import java.io.*;public class SimpleCilent
{
public static void main(String[] args)
{
Socket cilent = null;
try
{
cilent = new Socket("192.168.0.14",8000);
if (cilent !=null )
{ InputStream s1 = cilent.getInputStream();
OutputStream s2 = cilent.getOutputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(s1));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s2));
PrintWriter print = new PrintWriter(output);
BufferedReader inputLine = new BufferedReader(new InputStreamReader(System.in));
while (true)
{
System.out.println("please enter content:");
String s = inputLine.readLine();
print.println(s);
print.flush(); if (s.equals("quit"))
{
break;
}
else
{
String i_line = input.readLine();
System.out.println(i_line);
}
} }
}
catch(Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (cilent !=null )
{
cilent.close(); } }
catch(Exception e1)
{
e1.printStackTrace();
} }
}
}
import java.net.*;
import java.io.*;
public class SingleServer
{
public static void main(String[] args)
{
ServerSocket server = null; int singleNumber; try
{
server = new ServerSocket(8000); Socket form = server.accept();//此方法实现数据传输(客户端套接字)
if (form != null)
{ System.out.println("start ...."+form);
InputStream s1 = form.getInputStream();
OutputStream s2 = form.getOutputStream(); BufferedReader input = new BufferedReader(new InputStreamReader(s1));
BufferedWriter output = new BufferedWriter(new OutputStreamWriter(s2));
PrintWriter print = new PrintWriter(output);
while (true)
{
String s = input.readLine();
System.out.println("来自客户端消息-------"+s); if (s.equals("quit"))
{
break;
}
print.println("服务器收到的数据-----"+s); print.flush();
}
}
}
catch(Exception e)
{
e.printStackTrace();
} finally
{
try
{
if (server !=null )
{
server.close();
System.out.println("服务端关闭");
} }
catch(Exception e1)
{
e1.printStackTrace();
} }
}
}
我应该怎么修改这个程序:来达到以下目的
一个多线程服务端用来计算圆面积,从客户端接受半径输入然后将计算结果返回给客户端
import java.io.*;
public class Server
{
private ServerSocket server;
private Socket you;
public Server()
{
try
{
server = new ServerSocket(9001);
System.out.println("服务器运行中,监听端口:9001......");
while(true)
{
you = server.accept();
if(you != null)
System.out.println("有客户连接,启动服务线程......");
new Thread(new receive(you)).start();
System.out.println("处理完成,继续监听......");
}
}catch(Exception e){System.out.println("服务器监听出错!");}
}
public static void main(String args[])
{
new Server();
}
}class receive implements Runnable
{
DataInputStream din;
DataOutputStream dout;
Socket you;
String str;
int lens;
double area;
public receive(Socket you)
{
this.you = you;
}
public void run()
{
try
{
din = new DataInputStream(you.getInputStream());
dout = new DataOutputStream(you.getOutputStream());
while(true)
{
if((str = din.readUTF()).equals("exit"))
break;
lens = din.readInt();
area = 3.14 *(lens*lens);
dout.writeDouble(area);
}
dout.close();
din.close();
you.close();
}catch(Exception e){}
}
}
import java.io.*;public class Client
{
private Socket you;
public Client()
{
try
{
you = new Socket("127.0.0.1",9001);
System.out.println("连接服务器端口:9001.......");
if(you != null)
{
System.out.println("连接成功,等待输入圆半径:");
new Thread(new SendData(you)).start();
}
}catch(Exception e){}
}
public static void main(String args[])
{
new Client();
}
}class SendData implements Runnable
{
private String str;
private int lens;
private DataInputStream din;
private DataOutputStream dout;
private BufferedReader bin;
private Socket you;
public SendData(Socket you)
{
this.you = you;
}
public void run()
{
try
{
din = new DataInputStream(you.getInputStream());
dout = new DataOutputStream(you.getOutputStream());
bin = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
if((str = bin.readLine()).equals("exit"))
break;
lens = Integer.parseInt(str);
dout.writeUTF("OK");
dout.writeInt(lens);
System.out.println("圆面积:" + din.readDouble());
}
bin.close();
dout.writeUTF("exit");
dout.close();
din.close();
you.close();
}catch(Exception e){}
}
}
编译运行,没有问题,这是在命令行下运行的,想加界面的话,自己加就是了
2.服务器端就多一个线程:
.......server..........
while (true)
{
String s = input.readLine();
System.out.println("来自客户端消息-------"+s);if (s.equals("quit"))
{
break;
}
new Thread(){
try{
int r=Integer.valueOf(s).intValue();
print.println("半径:"+s);
long area=3.14*r^2;
print.println("面积:"+area);
}catch(Exception e){}
}.start();
}
}
}
catch(Exception e)
{
e.printStackTrace();
}