请帮忙看看下列三段代码的问题:其中第二段和第三段的问题我解决不了
1.
import java.io.*;
import java.net.*;
public class MultiTalkClient { /**
* @param args
*/
public static void main(String[] args)
{
try
{
Socket socket=new Socket("169.254.212.93",2000);
//向本机的2000端口发出客户请求
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader is= new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
String readline;
readline=in.readLine();
//从系统标准输入读入一字符串
while(!readline.equals("bye"))
//若从标准输入读入的字符串为bye则停止循环
{
os.println(readline);
//将从系统标准输入读入的字符串输出到Server
os.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Client:"+readline);
//在系统标准输出上打印读入的字符串
System.out.println("Server:"+ is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=in.readLine();
//从系统标准输入读入一字符串
}//继续循环
os.close();//关闭Socket输出流
is.close();//关闭Socket输入流
socket.close();//关闭Socket
}catch(Exception e)
{
System.out.println("Error"+e);//出错时打印出错信息
}
}}
2.import java.io.*;
import java.net.*;
import ServerThread;
public class MultiTalkServer {
static int clientnum=0;
//记录客户个数
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket;
boolean listening=true;
try
{
serverSocket=new ServerSocket(2000);
//在端口2000监听客户请求
}catch(IOException e)
{
System.out.println("Could not listen on 2000");
System.exit(-1);
}
while(listening)
//永远监听
{
new ServerThread(serverSocket.accept(),clientnum).start();
//根据得到的Socket对象和客户计数创建服务线程,并启动
clientnum++;
//增加客户计数
}
serverSocket.close();
//关闭ServerSocket
}
}3.import java.io.*;
import java.net.*;
public class ServerThread extends Thread
{
Socket socket=null;
//保存与本线程相关的Socket对象
int clientnum;
public ServerThread(Socket socket,int num)
//构造函数
{
this.socket=socket;
clientnum=num+1;
}
public void run()
//线程主体
{
try
{
String line;
BufferedReader is= new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:"+clientnum+is.readLine());
//在标准输出上打印从客户端读入的字符串
line=in.readLine();
while(!line.equals("bye"))
//如果该字符串为bye,则停止循环
{
os.println(line);
//向客户端输出该字符串
os.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Server:"+line);
System.out.println("Client"+clientnum+is.readLine());
line=in.readLine();
}//继续循环
os.close();
is.close();
socket.close();
serverSocket.close();
}catch(Exception e)
{
System.out.println("Error"+e);
}
}
}
1.
import java.io.*;
import java.net.*;
public class MultiTalkClient { /**
* @param args
*/
public static void main(String[] args)
{
try
{
Socket socket=new Socket("169.254.212.93",2000);
//向本机的2000端口发出客户请求
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader is= new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
String readline;
readline=in.readLine();
//从系统标准输入读入一字符串
while(!readline.equals("bye"))
//若从标准输入读入的字符串为bye则停止循环
{
os.println(readline);
//将从系统标准输入读入的字符串输出到Server
os.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Client:"+readline);
//在系统标准输出上打印读入的字符串
System.out.println("Server:"+ is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=in.readLine();
//从系统标准输入读入一字符串
}//继续循环
os.close();//关闭Socket输出流
is.close();//关闭Socket输入流
socket.close();//关闭Socket
}catch(Exception e)
{
System.out.println("Error"+e);//出错时打印出错信息
}
}}
2.import java.io.*;
import java.net.*;
import ServerThread;
public class MultiTalkServer {
static int clientnum=0;
//记录客户个数
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket;
boolean listening=true;
try
{
serverSocket=new ServerSocket(2000);
//在端口2000监听客户请求
}catch(IOException e)
{
System.out.println("Could not listen on 2000");
System.exit(-1);
}
while(listening)
//永远监听
{
new ServerThread(serverSocket.accept(),clientnum).start();
//根据得到的Socket对象和客户计数创建服务线程,并启动
clientnum++;
//增加客户计数
}
serverSocket.close();
//关闭ServerSocket
}
}3.import java.io.*;
import java.net.*;
public class ServerThread extends Thread
{
Socket socket=null;
//保存与本线程相关的Socket对象
int clientnum;
public ServerThread(Socket socket,int num)
//构造函数
{
this.socket=socket;
clientnum=num+1;
}
public void run()
//线程主体
{
try
{
String line;
BufferedReader is= new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:"+clientnum+is.readLine());
//在标准输出上打印从客户端读入的字符串
line=in.readLine();
while(!line.equals("bye"))
//如果该字符串为bye,则停止循环
{
os.println(line);
//向客户端输出该字符串
os.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Server:"+line);
System.out.println("Client"+clientnum+is.readLine());
line=in.readLine();
}//继续循环
os.close();
is.close();
socket.close();
serverSocket.close();
}catch(Exception e)
{
System.out.println("Error"+e);
}
}
}
请帮忙看看下列三段代码的问题:其中第二段和第三段的问题我解决不了
1. import java.io.*;
import java.net.*;
public class MultiTalkClient { /**
* @param args
*/
public static void main(String[] args)
{
try
{
Socket socket=new Socket("169.254.212.93",2000);
//向本机的2000端口发出客户请求
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader is= new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
String readline;
readline=in.readLine();
//从系统标准输入读入一字符串
while(!readline.equals("bye"))
//若从标准输入读入的字符串为bye则停止循环
{
os.println(readline);
//将从系统标准输入读入的字符串输出到Server
os.flush();
//刷新输出流,使Server马上收到该字符串
System.out.println("Client:"+readline);
//在系统标准输出上打印读入的字符串
System.out.println("Server:"+ is.readLine());
//从Server读入一字符串,并打印到标准输出上
readline=in.readLine();
//从系统标准输入读入一字符串
}//继续循环
os.close();//关闭Socket输出流
is.close();//关闭Socket输入流
socket.close();//关闭Socket
}catch(Exception e)
{
System.out.println("Error"+e);//出错时打印出错信息
}
} } 2.import java.io.*;
import java.net.*;
import ServerThread;
public class MultiTalkServer {
static int clientnum=0;
//记录客户个数
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket;
boolean listening=true;
try
{
serverSocket=new ServerSocket(2000);
//在端口2000监听客户请求
}catch(IOException e)
{
System.out.println("Could not listen on 2000");
System.exit(-1);
}
while(listening)
//永远监听
{
new ServerThread(serverSocket.accept(),clientnum).start();
//根据得到的Socket对象和客户计数创建服务线程,并启动
clientnum++;
//增加客户计数
}
serverSocket.close();
//关闭ServerSocket
} } 3.import java.io.*;
import java.net.*;
public class ServerThread extends Thread
{
Socket socket=null;
//保存与本线程相关的Socket对象
int clientnum;
public ServerThread(Socket socket,int num)
//构造函数
{
this.socket=socket;
clientnum=num+1;
}
public void run()
//线程主体
{
try
{
String line;
BufferedReader is= new BufferedReader(
new InputStreamReader(socket.getInputStream()));
//由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os=new PrintWriter(socket.getOutputStream());
//由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader in= new BufferedReader(
new InputStreamReader(System.in));
//由系统标准输入设备构造BufferedReader对象
System.out.println("Client:"+clientnum+is.readLine());
//在标准输出上打印从客户端读入的字符串
line=in.readLine();
while(!line.equals("bye"))
//如果该字符串为bye,则停止循环
{
os.println(line);
//向客户端输出该字符串
os.flush();
//刷新输出流,使Client马上收到该字符串
System.out.println("Server:"+line);
System.out.println("Client"+clientnum+is.readLine());
line=in.readLine();
}//继续循环
os.close();
is.close();
socket.close();
serverSocket.close();
}catch(Exception e)
{
System.out.println("Error"+e);
}
}
}
第一段:import java.io.*;
import java.net.*;public class MultiTalkServer
{
static int clientnum = 0;
// 记录客户个数
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;
boolean listening = true;
try
{
serverSocket = new ServerSocket(2000);
// 在端口2000监听客户请求
}
catch (IOException e)
{
System.out.println("Could not listen on 2000");
return;
}
while (listening)
// 永远监听
{
new ServerThread(serverSocket.accept(), clientnum).start();
// 根据得到的Socket对象和客户计数创建服务线程,并启动
clientnum++;
// 增加客户计数
}
serverSocket.close();
// 关闭ServerSocket
}
}
{
Socket socket = null;
// 保存与本线程相关的Socket对象
int clientnum;
public ServerThread(Socket socket, int num)
// 构造函数
{
this.socket = socket;
clientnum = num + 1;
}
public void run()
// 线程主体
{
try
{
String line;
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// 由Socket对象得到输入流,并构造相应的BufferedReader对象
PrintWriter os = new PrintWriter(socket.getOutputStream());
do
{
// 由系统标准输入设备构造BufferedReader对象
line = is.readLine(); //在标准输出上打印从客户端读入的字符串
System.out.println("Client [" + clientnum + "] : " + line);
os.println(line);
// 向客户端输出该字符串
os.flush();
// 刷新输出流,使Client马上收到该字符串
System.out.println("Server:" + line);
}while (!line.equals("bye"));// 如果该字符串为bye,则停止循环
os.close();
is.close();
socket.close();
}
catch (Exception e)
{
System.out.println("Error" + e);
}
}
}
{
/**
* @param args
*/
public static void main(String[] args)
{
try
{
Socket socket = new Socket("127.0.0.1", 2000);
// 向本机的2000端口发出客户请求
BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); // 由系统标准输入设备构造BufferedReader对象
PrintWriter os = new PrintWriter(socket.getOutputStream());
// 由Socket对象得到输出流,并构造PrintWriter对象
BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readline;
do
{
//从系统标准输入读入一字符串
readline = in.readLine();
//将从系统标准输入读入的字符串输出到Server
os.println(readline);
//刷新输出流,使Server马上收到该字符串
os.flush();
System.out.println("Client:" + readline); // 在系统标准输出上打印读入的字符串
System.out.println("Server:" + is.readLine());
}while (!readline.equals("bye"));// 若从标准输入读入的字符串为bye则停止循环
os.close();// 关闭Socket输出流
is.close();// 关闭Socket输入流
socket.close();// 关闭Socket
}
catch (Exception e)
{
System.out.println("Error" + e);// 出错时打印出错信息
}
}
}
原来的错误在于import ServerThread;和serverSocket.close();
不过谢了