您的位置:首页 > 其它

分布式计算:将Socket实验修改为服务端多线程程序,并测试完成

2017-04-23 00:18 489 查看

服务端:

package ServerMultithreadedProgram;

import java.net.ServerSocket;
import java.net.Socket;

public class Server {

private static ServerSocket ServerSocket = null;
static {
try {
ServerSocket = new ServerSocket(9090);
} catch(Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
try {

System.out.println("服务器已启动,等待客户端连接");
Socket socket = null;
while (true) {
socket = ServerSocket.accept();
new ServerThread(socket).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}


服务线程类:

package ServerMultithreadedProgram;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class ServerThread extends Thread{

private Socket client;

public ServerThread(Socket socket) {
this.client = socket;
}
public void run() {
BufferedReader br = null;
PrintWriter pw = null;
String str;

try {
br = new BufferedReader(new InputStreamReader(client.getInputStream()));
pw = new PrintWriter(client.getOutputStream());
while ((str = br.readLine()) != null) {
System.out.println("收到请求" + str);
pw.println("服务端收到请求:" + str);
pw.flush();
if (str.equals("end")) {
System.out.println("end");
break;
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pw.close();
try {
client.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

用户类:

package ServerMultithreadedProgram;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client2 {

public static void main(String[] args) {

Socket server = null;
BufferedReader br = null;
BufferedReader wt = null;
PrintWriter pw = null;

try {
server = new Socket("127.0.0.1", 9090);
br = new BufferedReader(new InputStreamReader(server.getInputStream()));
wt = new BufferedReader(new InputStreamReader(System.in));
pw = new PrintWriter(server.getOutputStream());

} catch (Exception e) {
e.printStackTrace();
}

String str = "";
while (true) {
try {
str = wt.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
pw.println(str);
pw.flush();
if (str.equals("end")) {
System.out.println("通讯结束end");
break;
}
try {
System.out.println(br.readLine());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {

br.close();
pw.close();
wt.close();
server.close();

} catch (Exception e) {
e.printStackTrace();
}
}
}


说明,只是将Server/Client改成服务端多线程版本。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: