- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的服务器代码
问题出在服务器代码中,当检查登录用户名和密码时,它每次都会输出“重试”消息
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.*;
import java.util.ArrayList;
//test
public class server {
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket listener;
int clientid=0;
try
{
listener = new ServerSocket(10000,10);
while(true)
{
System.out.println("Main thread listening for incoming new connections");
Socket newconnection = listener.accept();
System.out.println("New connection received and spanning a thread");
Connecthandler t = new Connecthandler(newconnection, clientid);
clientid++;
t.start();
}
}
catch (IOException e)
{
System.out.println("Socket not opened");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Connecthandler extends Thread
{
Socket individualconnection;
int socketid;
ObjectOutputStream out;
ObjectInputStream in;
String message;
public Connecthandler(Socket s, int i)
{
individualconnection = s;
socketid = i;
}
void sendMessage(String msg)
{
try{
out.writeObject(msg);
out.flush();
System.out.println("client>" + msg);
}
catch(IOException ioException){
ioException.printStackTrace();
}
}
public void run()
{
int clubId;
String clubName;
String clubEmail;
int fundsAvailTransfer;
String agentName;
int agentId;
String agentEmail;
String username;
int password;
ClubUser loggedInUser = null;
try
{
out = new ObjectOutputStream(individualconnection.getOutputStream());
out.flush();
in = new ObjectInputStream(individualconnection.getInputStream());
System.out.println("Connection"+ socketid+" from IP address "+individualconnection.getInetAddress());
//Commence
do
{
ArrayList<ClubUser> clubuser = new ArrayList<ClubUser>();
do
{
sendMessage("Please Enter 1 to Register or 2 to Login");
message = (String)in.readObject();
}while(!message.equals("1")&&!message.equals("2"));
if(message.equals("1"))
{
sendMessage("Enter 1 to Register Club or 2 to Register Player Agent");
message = (String)in.readObject();
// Club Registration
if(message.equals("1"))
{
sendMessage("Enter Club Name: ");
message = (String)in.readObject();
clubName = message;
sendMessage("Enter Club Id: ");
message = (String)in.readObject();
clubId = Integer.parseInt(message);
sendMessage("Enter Club Email: ");
message = (String)in.readObject();
clubEmail = message;
sendMessage("Enter Funds Available To Transfer: ");
message = (String)in.readObject();
fundsAvailTransfer = Integer.parseInt(message);
ClubUser cu = new ClubUser(clubId, clubName, clubEmail, fundsAvailTransfer);
clubuser.add(cu);
for (ClubUser u : clubuser)
{
System.out.println(u);
}// for
}// innerif
}// outerif
else if(message.equals("2"))
{
sendMessage("Please enter Club Name: ");
message = (String)in.readObject();
username = message;
sendMessage("Please enter Club Id: ");
message = (String)in.readObject();
password = Integer.parseInt(message);
for (ClubUser user : clubuser)
{
if (user.getClubId()==(password))
{
if (user.getClubName().equalsIgnoreCase(username))
{
loggedInUser = user;
// when a user is found, "break" stops iterating through the list
// break;
}
}
}// for
if(loggedInUser != null)
{
sendMessage("welcome!!!!!! " + loggedInUser.getClubName());
}
// problem here
else
{
sendMessage("try again ");
}
}// else if
sendMessage("Y to repeat or N to terminate");
message = (String)in.readObject();
}while(message.equalsIgnoreCase("Y"));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
try
{
out.close();
in.close();
individualconnection.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
我的客户端代码
客户端代码似乎没问题。
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.*;
import java.util.Scanner;
//test
public class Client
{
private Socket connection;
private String message;
private Scanner console;
private String ipaddress;
private int portaddress;
private ObjectOutputStream out;
private ObjectInputStream in;
public Client()
{
console = new Scanner(System.in);
System.out.println("Enter the IP Address of the server");
ipaddress = console.nextLine();
System.out.println("Enter the TCP Port");
portaddress = console.nextInt();
}
void sendMessage(String msg)
{
try{
out.writeObject(msg);
out.flush();
System.out.println("client>" + msg);
}
catch(IOException ioException){
ioException.printStackTrace();
}
}
public static void main(String[] args)
{
Client temp = new Client();
temp.clientapp();
}
public void clientapp()
{
try
{
connection = new Socket(ipaddress,portaddress);
out = new ObjectOutputStream(connection.getOutputStream());
out.flush();
in = new ObjectInputStream(connection.getInputStream());
System.out.println("Client Side ready to communicate");
/// Client App.
do
{
do
{
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
}while(!message.equalsIgnoreCase("1")&&!message.equalsIgnoreCase("2"));
if(message.equals("1"))
{
// reg as club or agent
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
if(message.equals("1"))
{
// club name
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
// club id
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
// club email
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
// club funds
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
}// inner if
}// outer if
else if(message.equals("2"))
{
// club name
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
// club id
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
// welcome message
message = (String)in.readObject();
System.out.println(message);
}// outer else if
message = (String)in.readObject();
System.out.println(message);
message = console.next();
sendMessage(message);
}while(message.equalsIgnoreCase("Y"));
out.close();
in.close();
connection.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
my clubuser class with getters and setters
public class ClubUser extends server{
int clubId;
String clubName;
String clubEmail;
int fundsAvailTransfer;
public ClubUser(int clubId, String clubName, String clubEmail, int fundsAvailTransfer) {
super();
this.clubId = clubId;
this.clubName = clubName;
this.clubEmail = clubEmail;
this.fundsAvailTransfer = fundsAvailTransfer;
}
int getClubId() {
return clubId;
}
private void setClubId(int clubId) {
this.clubId = clubId;
}
String getClubName() {
return clubName;
}
private void setClubName(String clubName) {
this.clubName = clubName;
}
private String getClubEmail() {
return clubEmail;
}
private void setClubEmail(String clubEmail) {
this.clubEmail = clubEmail;
}
private int getFundsAvailTransfer() {
return fundsAvailTransfer;
}
private void setFundsAvailTransfer(int fundsAvailTransfer) {
this.fundsAvailTransfer = fundsAvailTransfer;
}
@Override
public String toString() {
return "ClubUser clubId=" + clubId + ", clubName=" + clubName + ", clubEmail=" + clubEmail
+ ", fundsAvailTransfer=" + fundsAvailTransfer;
}
}
我想要的另一件事是将添加的用户详细信息保存在文件中,然后在程序开始时用它们初始化数组。我该怎么做?
最佳答案
在 Connecthandler::run() 方法中,尝试将 ArrayList“clubUser”移到最外层 do/while 的范围之外。这样它就不会在每次迭代时重新初始化。
// Place the list initialization here; outside the scope of the outer-most do loop
ArrayList<ClubUser> clubuser = new ArrayList<ClubUser>();
do {
// remove from here.
// ArrayList<ClubUser> clubuser = new ArrayList<ClubUser>();
do {
sendMessage("Please Enter 1 to Register or 2 to Login");
message = (String) in.readObject();
} while (!message.equals("1") && !message.equals("2"));
...
}
关于java - 为什么我的服务器跳过 if 语句并转到 else 部分(重试)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675797/
我的算法- private static MyList skip$DeleteItem(MyList L , int M , int N){ MyList curr = L; MyLi
我正在 SWI-Prolog 下开发,但我的目标是 Erlog (https://github.com/rvirding/erlog)。我需要一种使用非标准 Prolog 语法的方法。 有没有办法
我正在尝试从应用程序下载一大堆文件。它的shell命令是“下载文件名”。 我有一个文本文件,其中包含必须下载的所有文件名。我要做的就是运行一个脚本/命令,以便在执行上述命令时 1.从文本文件中提取文件
我试图循环遍历所有用户的评论,但使用 if 语句查找特定值。问题是我的应用程序崩溃了,因为一些用户没有发表评论,因此我得到“无法读取‘收集’未定义的属性”。如何跳过 if 语句的未定义值?代码如下:
我们有按年份分区的索引,例如: items-2019 items-2020 考虑以下数据: POST items-2019/_doc { "@timestamp": "2019-01-01" }
我只是编写一个页面来按实体编号查看每个 ASCII 条目,我想知道是否有一种更简单/更干净的方法来跳过不需要的数字。 var x = new Ar
我希望能够普遍使用重复条目,但也能够跳过特定日期。例子: ** TODO swim practice SCHEDULED 但是,我提前知道 2013-12-25 不会有练习。但是,当我将项目标
如何跳过像这样的 for 循环的一次迭代: for (int i = 65; i <= 90; i++) { if (!(i == 73)) { uniq.add((char) i);
这个问题已经存在: Scanner issue when using nextLine after nextXXX [duplicate] 已关闭 9 年前。 ask=1; while(ask==1)
我在使用一个程序时遇到了一些麻烦,我应该允许用户在程序中输入任意数量的数字,直到他们不再想要为止。然后程序应该计算输入数字的平均值和最大值。我哪里做错了? import java.util.Scann
我有一个名为segments的 Sprite 数组,我想在每个循环中跳过segments的第一个元素。我目前正在这样做: var first = true; for each (var segment
我目前正在编写一个 for 循环来遍历包含 38 个元素的 2D。然而,其中一些元素为空,我希望 for 循环简单地跳过它们(因为在我正在解决的难题中,它们没有与它们相关的移动)。快速搜索表明,我可以
我想使用pre-commit处理我的 git 项目的 git hooks。但是,当我使用它时,git commit 命令不断跳过 unittest 执行: (smartexchange) trnboo
这个问题在这里已经有了答案: Does scanf() take '\n' as input leftover from previous scanf()? (1 个回答) 关闭 9 年前。 我正在
我正在迭代 csv 文件中的每一行,并仅选择/计算满足条件的行。但是,当连续出现错误时,它会停止循环。有没有办法告诉 python 跳过错误并移动到下一行?我使用了 try 函数但没有工作。我的代码是
感谢您提供的优秀示例,我试过了,它按我的预期工作。很高兴看到有人了解问题的本质。但是,我认为我应该用 Lift 标记问题,因为我正在使用 Lift 框架,这就是(仍然)发生这个问题的地方(尽管我仍然认
大家好,我正在编写一个算法来从 NodeTree 中删除具体分支(例如 DSF)。如果您选择 Node 的名称,算法将检查该 Node 是否是其他 Node 的父 Node ;如果是,它会获取该 No
附有代码和输出。 基本上它是第二次跳过我的输入。就像我启动代码一样,它让我输入一个选项,然后第二次跳过输入,直接转到开关的默认情况。 然后第三次它就会允许我输入。不明白为什么。 任何帮助将不胜感激。
我在 JavaScript 中有一个 for 循环,它会定期跳过间隔,但我无法确定原因。 console.log(parseInt($('input.num-to-add').val())); num
我正在 JasperSoft 中填写参数。在我的报告中我有参数:参数_1、参数_2、参数_3 int a; for (a = 0; a < headers.length; a++) {
我是一名优秀的程序员,十分优秀!