服务器端
package TCPSocket_28;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class LoginServer {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//1.创建一个服务器端Socket对象
ServerSocket serverSocket=new ServerSocket(5000);
//2.使用accept()方法来监听用户请求,创建链接
Socket socket=serverSocket.accept();
//3.通过输入流获取用户请求信息
InputStream is=socket.getInputStream();
//由于用户的输入是字符串,将它包装成一个缓冲区的reader对象
//BufferedReader要求的输入是InputStreamReader,
//因此要把InputStream包装成一个InputStreamReader
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String info;
//一行一行的读
while ((info=br.readLine())!=null) {
System.out.println("客户端说:"+info);
}
//通过输出流给客户端一个响应
OutputStream os=socket.getOutputStream();
String reply="欢迎登录!";
os.write(reply.getBytes());
//4.关闭相应的数据流和Socket
os.close();
br.close();
is.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
客户类
package TCPSocket_28;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class LoginClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//1.创建客户端Socket对象
Socket socket=new Socket("localhost",5000);
//2.创建输出流对象
OutputStream os=socket.getOutputStream();
//3.通过输出流将登录信息发送请求给服务器
String loginInfo="用户名:admin:密码:123456";
//把字符串打散成字节数组
os.write(loginInfo.getBytes());
//通过输入流接收服务器返回给客户端的响应
socket.shutdownOutput();
InputStream is=socket.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String reply;
while ((reply=br.readLine())!=null) {
System.out.println("客户端说:"+reply);
}
//4.关闭流及Socket对象
br.close();
is.close();
os.close();
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}