import java.io.*;
import java.net.*;
import java.net.Socket;
import org.omg.CORBA.portable.InputStream;
/**基于TCP协议的服务器端
*
*/
public class Server {
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
ServerSocket server=new ServerSocket(7001);
//调用accept()方法侦听,等待客户端的链接
System.out.println("服务器已启动,等待客户端的连接");
Socket socket;
int count=0;
while(true) {
socket=server.accept();
ServerThread serverthread=new ServerThread(socket);
serverthread.start();
count++;
System.out.println("客户端的数量:"+count);
}
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
//客户端
public class Clien {
public static void main(String[] args) {
// TODO 自动生成的方法存根
try {
Socket socket=new Socket(InetAddress.getLocalHost()
,7001);
//获取输出流,用于想服务器端发送信息
OutputStream os=socket.getOutputStream();
PrintWriter pw=new PrintWriter(os);//将字节输出流包装成打印流
pw.write("用户名:admin; 密码:123");
pw.flush();
socket.shutdownOutput();//关闭输出流
//获取输入流,读取服务端响应
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info=null;
while((info=br.readLine())!=null) {
System.out.println("我是客户端,服务器说:"+info);
}
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.*;
public class ServerThread extends Thread {
Socket socket;
public ServerThread(Socket soket) {
this.socket=socket;
}
public void run() {
BufferedReader br=null;
OutputStream os=null;
PrintWriter pw = null;
InputStreamReader isr=null;
InputStream is=null;
try {
//获取输入流
//is=socket.getInputStream();
isr=new InputStreamReader(socket.getInputStream());
br=new BufferedReader(isr);
String info=null;
while((info=br.readLine())!=null) {
System.out.println("我是服务器,客户端说:"+info);
}
socket.shutdownInput();
//获取输出流。响应客户端
os=socket.getOutputStream();
pw=new PrintWriter(os);
pw.write("欢迎您");
pw.flush();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}finally {
//必须要执行的代码
//关闭资源
try {
if(pw!=null)
pw.close();
if(os!=null)
os.close();
if(br!=null)
br.close();
if(isr!=null)
isr.close();
//if(is!=null)
// is.close();
if(socket!=null)
socket.close();
} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}
}