高级java实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:基于多线程的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);
}
}
}
实验结果: