我正在尝试从服务器中取出一个随机数。我已经设置了随机数并将其转换为缓冲区读取器的字符串,但是仍然出现错误,有人可以看到我要去哪里了吗?
如果有人感兴趣,我已经在编写代码,现在可以正常工作了
更新的工作服务器代码
import java.net.*;
import java.io.*;
import java.util.Random;
public class server extends Thread
{
private ServerSocket serverSocket;
public server(int port) throws IOException
{
serverSocket = new ServerSocket(port);
serverSocket.setSoTimeout(10000);
}
public void run()
{
System.out.println("Starting game...");
while(true)
{
System.out.println("Client connection established! Game started");
try
{
Socket server = serverSocket.accept();
Random rand = new Random();
int randInt = rand.nextInt(12);
DataOutputStream out = new DataOutputStream(server.getOutputStream());
out.writeUTF("Turning on button " + randInt);
DataInputStream in = new DataInputStream(server.getInputStream());
System.out.println(in.readUTF());
out.writeUTF("Acknowledged - Button 1 pressed");
}// End try
catch(SocketTimeoutException s)
{
System.out.println("Socket timed out!");
break;
}// End catch
catch(IOException e)
{
e.printStackTrace();
break;
}// End catch
}// End while()
}// End run()
/*The start of the main loop */
public static void main(String [] args)
{
int port = 4444;
try
{
Thread t = new server(port);
t.start();
}// End try
catch(IOException e)
{
e.printStackTrace();
}// End catch
}// End main()
}/
更新的工作客户代码
import java.net.*;
import java.io.*;
import java.util.Random;
public class client
{
public static void main(String [] args)
{
String serverName = "localhost";
int port = 4444;
try
{
Socket client = new Socket(serverName, port);
Random rand = new Random();
int randInt = rand.nextInt(12);
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
out.writeUTF("Button " + randInt + " pressed");
InputStream inFromServer = client.getInputStream();
DataInputStream in = new DataInputStream(inFromServer);
}// End client
catch(IOException e)
{
e.printStackTrace();
}// End catch
}// End main
}
最佳答案
读者返回字符串,而不是接受它们,因此在这方面它们是相关的。它们无法像您在这里一样工作;我建议您阅读文档,以便将来了解如何使用阅读器。
在任何情况下,都使用阅读器从某种流中读取文本。您已经有了文字,因此不需要阅读器。
在服务器中代码的末尾,添加outToClient.println(random);
并完全删除BufferedReader
。
while(true)
{
//listens for connection
Socket connected = Server.accept();
//prints clients adddress and port
System.out.println( " THE CLIENT"+" "+ connected.getInetAddress() +":"+connected.getPort()+" IS CONNECTED ");
Random rannum = new Random();
int num = rannum.nextInt(12);
String random = Integer.toString(num);
System.out.println("Turning on Button " + num);
PrintWriter outToClient = new PrintWriter(connected.getOutputStream(),true);
outToClient.println(random);
}