gpt4 book ai didi

java - 两个生产者同时发送数据

转载 作者:行者123 更新时间:2023-11-30 07:15:23 25 4
gpt4 key购买 nike

我有一个生产者发送数据 15 秒。当第一个生产者已经在运行时,我只是复制相同的程序并从不同的窗口运行它。我收到“端口 3333 已在使用,java.net.BindException:地址已在使用”

如何让多个生产者(多进程非线程)在同一个套接字上发送数据?但是我不知道端口 3333 从哪里出现。

我的程序可能有什么问题?如果需要,我可以提供完整的问题陈述。但是简而言之,我正在使用自定义 Kafka Producer 发送数据,我希望两个这样的 Kafka Producer 发送数据。

最佳答案

我猜你正在启动的程序正在尝试监听固定端口 3333 上的连接,当你启动第二个实例时,它会给出“已经绑定(bind)”的错误。查看是否有办法使用一些参数更改该端口。但我无法对此发表评论,因为您没有提供任何来源。

但我只是要解释一下在正常情况下事情是如何工作的

假设消费者正在监听 3333 端口,那么它将成为服务器并接受该端口上的连接。并且多个客户端可以将该端口上的数据发送到服务器

示例客户端程序

BufferedReader inFromUser = new BufferedReader( new InputStreamReader(System.in));  
Socket clientSocket = new Socket("localhost", 3333); //3333 is the port on which the server is listening
DataOutputStream outToConsumer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromConsumer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); //Only if consumer sends something in reply
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromConsumer.readLine();

因此多个生产者将成为客户端并将数据发送给在专用端口上监听的消费者。请记住,多个消费者将无法在同一个套接字上收听,您将不得不针对不同的消费者使用不同的端口

关于java - 两个生产者同时发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17804557/

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