これは私の初めてのTCPクライアント/サーバープログラムです。私は、クライアント側にユーザ名とパスワードを尋ねる簡単なJavaクライアントとサーバプログラムを作ることになっています。そこからサーバは、マルチディメンション配列を使用して作成しようとしたユーザデータベースをチェックして、一致するかどうかを確認し、クライアントに「Hello」(ユーザ名)というメッセージを返し、サーバー上の登録ユーザー。 Java TCPクライアント/サーバーとループの問題
は 特定の問題しかし、私は2つを実行するたびに、私は一部に到着したとき、サーバーがループを通過することになってたことがあり、表示されているすべてのことは、現在サーバーに登録さ 」他のユーザである私次のものが含まれます。MATTCARLJOHNサーバーに登録されている他のユーザーは、現在次のものを含んでいます。MATTCARLJOHNサーバーに登録されている他のユーザーには、現在MATTCARLJOHN "が含まれています。私のサーバは私のforループとif文を完全に無視しているようですが、クライアント側のユーザ名とパスワードの入力に関係なく、認証とそのループをまっすぐにスキップすることになっています。 クライアント
import java.io.*;
import java.net.*;
class TCPClient2
{
public static void main(String argv[]) throws Exception
{
String userName;
String passWord;
String loginInfo;
String loginInfo2;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.println("Username: ");
userName = inFromUser.readLine();
outToServer.writeBytes(userName + '\n');
System.out.println("Password: ");
passWord = inFromUser.readLine();
outToServer.writeBytes(passWord + '\n');
loginInfo = inFromServer.readLine();
System.out.println(loginInfo);
clientSocket.close();
}
}
とサーバー
import java.io.*;
import java.net.*;
class TCPServer2
{
public static void main(String argv[]) throws Exception
{
ServerSocket welcomeSocket = new ServerSocket(6789);
String[][] Login = {{"MATT","UNCP"},{"JOHN","UNCP"},{"CARL","UNCP"}};
String username;
String username1;
String password;
String password1;
while(true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
username = inFromClient.readLine();
System.out.println("Username received: " + username);
password = inFromClient.readLine();
System.out.println("Password received: " + password);
username1=username.toUpperCase() + '\n';
password1=password.toUpperCase() + '\n';
for(int i = 0; i<Login.length; i++){
if(Login[i][0].equals(username1) && Login[i][1].equals(password1)){
outToClient.writeBytes("Hello " + username1);
outToClient.writeBytes("Other users registered on the server currently include: ");
for(int k = 0; k<Login.length; k++){
outToClient.writeBytes(Login[k][0]);}
else
outToClient.writeBytes("Invalid Username and/or password.");
}
}
}
}
}
すべてのヘルプは非常にこれはサイト上で私の初めての投稿で、高く評価されるだろう。ここでは
は、2つのプログラムがあります私はネットワーキングとJavaの一般的な面でとても新しいので、私の質問が混乱するようであれば私を許してください。
ありがとうございます。
YAHは、それは、それが大きいだけでなく、私のために動作しているすべてであるため、ループそれは私ですが、それより下しかし、主な問題は、成功したユーザーのログインを認識させることです。 – user1373440