实验三:基于多线程的Socket通信
班级:计科F1202
姓名:黄浩翔学号:201216010110 实验目的:通过将Socket通信和多线程的知识结合应用,掌握基于多线程的通信设计方法。
实验内容:创建客户端Socket;创建服务器端Socket;建立基于多线程的服务器段监听和数据处理机制;Socket的启动和管理。
实验步骤:
//服务端
package基于多线程Socket通信;
import .ServerSocket;
import .Socket;
public class MultiServer {
public static void main(String args[]) {
ServerSocket server=null;
int count=0;
boolean listening =true;
try{
try{
server =new ServerSocket(6000);
System.out.println("服务器启动:");
} catch (Exception e){
System.out.println("不能接听服务");
}
while(listening){
Socket socket=server.accept();
count++;
System.out.println("Accept "+count+" Client!");
Thread read = new
ReadThread(socket,"[client"+count+"]");
read.start();
}
server.close();
} catch (Exception e){
System.out.println("Error:" + e);
}
}
}
//多线程
package基于多线程Socket通信;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import .Socket;
public class ReadThread extends Thread {
Socket socket=null;
String client;
public ReadThread(Socket socket,String client){
this.socket=socket;
this.client=client;
}
public ReadThread(Socket socket,String side ,int clientnum){
this(socket,side);
}
public void run(){
try{
String line="";
BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()));
while(line!=null&&!line.equals("bye")){
line =is.readLine();
System.out.println(client+" read :" +line);
}
is.close();
socket.close();
} catch (Exception e) {
System.out.println("Error : " +e);
}
}
}
//客户端
package基于多线程Socket通信;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import .Socket;
public class Client {
public static void main (String args[]){
try{
Socket socket=new
Socket("172.18.69.167",6000);
System.out.println("请输入:");
BufferedReader sin=new BufferedReader(new InputStreamReader(System.in));
PrintWriter os=new
PrintWriter(socket.getOutputStream());
String readline;
readline =sin.readLine();
while (!readline.equals("bye")){
os.println(readline);
os.flush();
readline= sin.readLine();
}
os.close();
socket.close();
} catch (Exception e){
System.out.println("Error" + e);
}
}
}
实验结果:
实验体会:这次实验让我对多线程通信有了一次直观的认知!。