我想在Processing中设置一个数据流服务器,因此客户端会向服务器发送一个字符串,服务器会回复它。例如Client-Server" Cupcake"服务器 - 客户端" Cupcakce听起来很有趣"所以服务器回答字符串。我尝试使用UDP库并打开服务器上的端口。但是,当服务器必须回答Clinet时,它确实无法正常工作,因为我无法打开客户端的端口。任何解决方案?
答案 0 :(得分:1)
听起来你需要双向沟通。
使用UDP ,您需要两个既是UDP服务器又是客户端的草图。 e.g。
sketch #1 listens on port 12000
sketch #1 sends data on port 12001
sketch #2 listens on port 12001
sketch #2 sends data on port 12000
您还可以使用TCP 套接字。 作为服务器,您可以使用示例>图书馆>网络>的ChatServer 强> 我很惊讶那里没有ChatClient示例,但你可以逃避这样的事情:
import javax.swing.*;
import processing.net.*;
int port = 10002;
Client myClient;
void setup()
{
size(400, 400);
textFont(createFont("SanSerif", 16));
myClient = new Client(this, "localhost", port); // Starts a client on port 10002
background(0);
}
void draw()
{
background(0);
text("client - press ENTER to type\nconnected:"+myClient.active(), 15, 45);
}
void keyReleased() {
if (keyCode == ENTER) {
String message = JOptionPane.showInputDialog(null, "message: ", "TCP Client messaging", JOptionPane.QUESTION_MESSAGE);
println(message);
if (myClient.active() && message != null) {
myClient.write(message);
}
}
}
注意:服务器必须在客户端之前运行,以便客户端可以连接。
请务必检查UDP和TCP协议之间的区别,以确定哪种方式最适合您的情况(特别是如果您使用更多客户端)。
值得关注的另一个选择是WebSockets。这将允许您在Processing中拥有一个WebSocket服务器,客户端可以是另一个Processing sketch,也可以是任何browser with WebSocket support(例如最现代的)