在处理中设置数据服务器

时间:2017-01-21 20:33:11

标签: server udp client processing ports

我想在Processing中设置一个数据流服务器,因此客户端会向服务器发送一个字符串,服务器会回复它。例如Client-Server" Cupcake"服务器 - 客户端" Cupcakce听起来很有趣"所以服务器回答字符串。我尝试使用UDP库并打开服务器上的端口。但是,当服务器必须回答Clinet时,它确实无法正常工作,因为我无法打开客户端的端口。任何解决方案?

1 个答案:

答案 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(例如最现代的)