我正在开发客户端/服务器身份验证程序,但是遇到了问题。客户端可以很好地与服务器建立连接,但是一旦我输入密码和用户名,它就不会返回有效的用户名/密码。如果用户使用正确的用户名/密码服务器登录,则应返回“
Welcome,username”,如果无效,则返回“登录失败”。我查看了printwriter和bufferedreader文档,以确保我使用正确的方法在服务器/客户端之间正确传递文本。我尝试通过在服务器和客户端上同时打印用户名和密码来进行调试,以确保它们都在侦听/写入,因为它们确实会打印出正确的用户名/密码,因此它们似乎在监听/写入。有人可以给我一些我要去哪里的见解吗?
public class Connect {
private String USERNAME = "java";
private String PASSWORD = "java";
private int PORT = 9090;
private String HOSTNAME = "localhost";
public String getUsername(){
return this.USERNAME;
}
public String getPassword(){
return this.PASSWORD;
}
public int getPort(){
return this.PORT;
}
public String gethostName(){
return this.HOSTNAME;
}
}
import java.io.*;
import java.io.net.*;
public class Client {
private final String FILENAME = null;
Connect c = new Connect();
Socket socket;
BufferedReader read;
PrintWriter output;
public void startClient() throws UnknownHostException, IOException{
//Create socket connection
socket = new Socket(c.gethostName(), c.getPort());
//create printwriter for sending login to server
output = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
//prompt for user name
String username = JOptionPane.showInputDialog(null, "Enter User Name:");
//send user name to server
output.println(username);
//prompt for password
String password = JOptionPane.showInputDialog(null, "Enter Password");
//send password to server
output.println(password);
output.flush();
//create Buffered reader for reading response from server
read = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//read response from server
String response = read.readLine();
System.out.println("This is the response: " + response);
//display response
JOptionPane.showMessageDialog(null, response);
}
public void fileInfo(){
}
public static void main(String args[]){
Client client = new Client();
try {
client.startClient();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.*;
import java.io.net.*;
public class Server {
private int currentTot;
ServerSocket serversocket;
Socket client;
int bytesRead;
Connect c = new Connect();
BufferedReader input;
PrintWriter output;
public void start() throws IOException{
System.out.println("Connection Starting on port:" + c.getPort());
//make connection to client on port specified
serversocket = new ServerSocket(c.getPort());
//accept connection from client
client = serversocket.accept();
System.out.println("Waiting for connection from client");
try {
logInfo();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void logInfo() throws Exception{
//open buffered reader for reading data from client
input = new BufferedReader(new InputStreamReader(client.getInputStream()));
String username = input.readLine();
System.out.println("SERVER SIDE" + username);
String password = input.readLine();
System.out.println("SERVER SIDE" + password);
//open printwriter for writing data to client
output = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
if(username.equals(c.getUsername()) &&password.equals(c.getPassword())){
output.println("Welcome, " + username);
}else{
output.println("Login Failed");
}
}
public static void main(String[] args){
Server server = new Server();
try {
server.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
您还需要刷新服务器的printWriter,就像在客户端一样。
在loginfo()
方法结束时,
if(username.equals(c.getUsername()) &&password.equals(c.getPassword())){
output.println("Welcome, " + username);
}else{
output.println("Login Failed");
}
output.flush();
output.close();
我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se
我正在构建一个Java Web应用程序,当经理批准他们的请求时,它会自动授予用户对其Windows PC的管理权限。 为了实现这一点,我将编写一个脚本来自动远程访问用户的计算机,并将他们添加到计算机的管理组中。我想为了做到这一点,我需要一个管理服务帐户来访问所有的计算机。 我的问题是,我如何安全地存储管理服务帐户信息?应用程序每次需要访问并授予用户管理员权限时都需要凭据,那么我如何让应用程序在没有
前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,
拥有客户端密码的客户端可以使用RFC2617中定义的HTTP基本身份验证方案与授权服务器进行身份验证。客户端标识使用按照附录B的“application/x-www-form-urlencoded”编码算法编码,编码后的值用作用户名;客户端密码使用相同的算法编码并用作密码。授权服务器必须支持HTTP基本身份验证方案,用于验证被颁发客户端密码的客户端的身份。例如(额外的换行仅用于显示目的): Au
[服务器]:
如何初始化SDK并且让基本的用户名密码认证成功 通过阅读此文档,您可以完成用户密码登录认证,并成功启动VPN SDK 此文档默认已经集成SDK并且工程可以编译通过运行 您完全可以参考demo(特别是 AuthViewController.m)进行代码编写,但此文档仍然列出了必要的步骤 此文档只是参考,您应该根据具体需求因地适宜 此文档会略过如头文件import等基本概念与步骤,只介绍重要的概念 在