服务器端代码
package service;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.zip.InflaterInputStream;
public class Server {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket ss = null;
try {
System.out.println("服务器已启动,等待客户端连接。。。");
ss = new ServerSocket(8888);
while (true) {
Socket s = ss.accept();
new serverthread(s).start();
s.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class serverthread extends Thread {
Socket s = null;
String str;
public serverthread(Socket socket) {
super();
this.s = socket;
System.out.println("一个客户端已经连接上");
}
PrintStream out=null;
BufferedReader in =null;
@Override
public void run() {
// TODO Auto-generated method stub
try {
System.out.println(s.getLocalPort());
out=new PrintStream(s.getOutputStream(), true);
in=new BufferedReader(new InputStreamReader(s.getInputStream()));//获取客户端套接字输入输出流
str=in.readLine();
System.out.println("客户端用户名"+str);
if (str.equals("JSIT")) {
out.println("用户名正确");
}else
out.println("用户名不存在");
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
客户端代码
package client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Clint2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Socket s=new Socket("127.0.0.1", 8888);
PrintStream out=new PrintStream(s.getOutputStream());
BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedReader stdin=new BufferedReader(new InputStreamReader(System.in));
System.out.print("用户名:");
String str=stdin.readLine();
out.println(str);
System.out.println(in.readLine());
in.close();
out.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我先运行了服务端,再运行客户端时会报socket is closed的异常,是什么原因?