gpt4 book ai didi

java - 检索插入数字的双倍——客户端服务器编程

转载 作者:行者123 更新时间:2023-12-02 00:32:32 25 4
gpt4 key购买 nike

我正在开始客户端-服务器编程。我想做的基本上是一个 Echo 服务器,但我希望服务器返回 2*(我插入的数字),而不是返回与客户端插入的相同的内容。

我有以下服务器:

public class Server {

public static void main(String args[]) throws Exception {
ServerSocket server = new ServerSocket(6789);
while(true) {
try {
Socket aux = server.accept();

DataInputStream dis = new DataInputStream(aux.getInputStream());
DataOutputStream dos = new DataOutputStream(aux.getOutputStream());
int total = 0;
while(dis != null) {
int res = dis.read();
total = 2*(res);
dos.writeInt(total);
}

}
catch (EOFException e) {
out.println("The client exit!");
continue;
}
}
}

}

以及以下客户端:

public class Client {


public static void main(String args[]) throws Exception {


Socket client = new Socket("localhost", 6789);
DataInputStream dis = new DataInputStream(client.getInputStream());
DataOutputStream dos = new DataOutputStream(client.getOutputStream());
BufferedReader input = new BufferedReader(new InputStreamReader(in));

while(true) {
int fromClient = input.read();
dos.writeInt(fromClient);
client.shutdownOutput(); //to show to the server the end of file
int fromServer = dis.readInt();
out.println(fromServer);
}
}

}

有人可以帮忙吗?

我在服务器端遇到以下错误:

Exception in thread "main" java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:132)
at java.io.DataOutputStream.writeInt(DataOutputStream.java:197)
at Server.main(Exercicio3.java:21)

在客户端,当我插入一个值(在本例中为“1”)时:

1
0
Exception in thread "main" java.net.SocketException: Broken pipe
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109)
at java.net.SocketOutputStream.write(SocketOutputStream.java:132)
at java.io.DataOutputStream.writeInt(DataOutputStream.java:197)
at Client.main(Exercicio4.java:25)

谢谢

最佳答案

在不知道您的问题是什么的情况下,我可以看到的一个问题是:

int res = dis.read();

res 是输入中的下一个字节(请参阅 doc ),而不是用户输入的整数。它将是您的用户输入的字符代码的第一个字节。

关于java - 检索插入数字的双倍——客户端服务器编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8657678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com