我想写一个客户端与服务器通信的代码例子,用猜数游戏。我的java不是很好。代码必须这样做:客户端将连接到服务器。服务器将生成一个随机数。客户会猜出来的。我可以输入1次。然后就冻僵了。
这是我的猜谜游戏代码
{
private int goal;
private boolean correct;
public GuessingGame()
{
goal = (int) (Math.random() * 9 + 1);
correct = false;
}
public int getGoal()
{
return goal;
}
public boolean getCorrect()
{
return correct;
}
public String guess(int guess)
{
if(guess == goal)
{
correct = true;
return "Well done, your answer is correct";
}
else if(guess > goal)
{
return "Too high, can you try it with another number?";
}
else return "Too low, you can try to pick up more bigger number please";
}
}
这是我的服务器代码
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSide
{
public static void main(String[] args) throws IOException
{
GuessingGame game = new GuessingGame();
ServerSocket socket = null;
Socket client = null;
String result;
boolean correct = false;
int attempt;
try
{
socket = new ServerSocket(1234);
}
catch(IOException ioe)
{
System.err.println(ioe);
return;
}
System.out.println("Our server is still running...");
client = socket.accept();
System.out.println("Yes, our Client had connected");
DataInputStream in = new DataInputStream(new BufferedInputStream(client.getInputStream()));
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(client.getOutputStream()));
while(!correct)
{
attempt = in.readInt();
result = game.guess(attempt);
correct = game.getCorrect();
out.writeUTF(result);
out.writeBoolean(correct);
out.flush();
if(correct == false)
{
client = socket.accept();
attempt = in.readInt();
result = game.guess(attempt);
correct = game.getCorrect();
out.writeUTF(result);
out.writeBoolean(correct);
out.flush();
}
else
{
client.close();
socket.close();
}
}
}
}
这是我的客户代码
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
public class ClientSide
{
public static void main(String[] args) throws IOException
{
System.out.println("This is Number Guessing Game. \nChoose any number between 1 to 10 : ");
Scanner keyboard = new Scanner(System.in);
int attempt = 0;
try
{
attempt = keyboard.nextInt();
if(attempt < 1 || attempt > 9)
{
System.out.println("Your number is too large/small, please make a guess between 1 to 10");
attempt = keyboard.nextInt();
}
}
catch(NumberFormatException nfe)
{
System.out.println("Just choose numbers! Try again");
attempt = keyboard.nextInt();
}
try
{
Socket server = new Socket("localhost", 1234);
System.out.println("Connecting...");
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(server.getOutputStream()));
DataInputStream in = new DataInputStream(new BufferedInputStream(server.getInputStream()));
out.writeInt(attempt);
out.flush();
System.out.println("Our server is still running...");
String result = in.readUTF();
boolean correct = in.readBoolean();
System.out.println(result);
while (!correct)
{
attempt = keyboard.nextInt();
out.writeInt(attempt);
out.flush();
System.out.println("Our server is still running...");
result = in.readUTF();
System.out.println(result);
correct = in.readBoolean();
}
server.close();
keyboard.close();
System.out.println("Finish. Thank you");
System.exit(0);
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
}
样本输出
This is Number Guessing Game.
Choose any number between 1 to 10 :
23
Your number is too large/small, please make a guess between 1 to 10
12
Connecting...
Our server is still running...
Too high, can you try it with another number?
15
Our server is still running...
暂无答案!
目前还没有任何答案,快来回答吧!