用户工具

站点工具


ocrobot:alpha:enc28j60:tutorial01

高级聊天服务器

用来分发任何传入的消息发送给所有一个简单的服务器,即局域网内多个服务端互相聊天。 连接的客户端,消息来自客户端。 要使用telnet到你的设备的IP地址和类型。

搭建电路

1、将ALPHA ENC28J60堆叠于ALPHA MEGA328-U上;

2、用网线连接交换机与ALPHA ENC28J60,在拨码开关中,将10拨上;

3、将ALPHA MEGA328-U通过数据线连接上电脑

代码

/*
高级聊天服务器
 
 用来分发任何传入的消息发送给所有一个简单的服务器
 
 
 创建182009年12月
 由David A.梅利斯
 修改2012年4月9日
 由汤姆Igoe
 重新设计,使操作者使用==252013年11月
 由诺伯特Truchsess
 
 */
 
#include <UIPEthernet.h>
 
// 为您的控制器下方输入MAC地址和IP地址
//IP地址将取决于你的本地网络上。
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,6);//映射到你的路由器,更改最后一位IP地址
 
// 默认的telnet端口23
EthernetServer server(23);
 
EthernetClient clients[4];
 
void setup() {
  // 初始化以太网设备
  Ethernet.begin(mac, ip);
  //开始监听客户端
  server.begin();
 // 打开串口通信和等待端口打开:
  Serial.begin(9600);
   while (!Serial) {
    ; // 等待串口连接。只被leonardo需要。
  }
 
 
  Serial.print("Chat server address:");
  Serial.println(Ethernet.localIP());
}
 
void loop() {
  // 等待一个新的客户端
  EthernetClient client = server.available();
 
  if (client) {
 
    boolean newClient = true;
    for (byte i=0;i<4;i++) {
      //检查该客户端是否指的是同一个串口作为现有实例之一:
      if (clients[i]==client) {
        newClient = false;
        break;
      }
    }
 
    if (newClient) {
      //检查其现有的客户端,也可以改掉:
      for (byte i=0;i<4;i++) {
        if (!clients[i] && clients[i]!=client) {
          clients[i] = client;
          // 清理掉输入缓冲器:
          client.flush();
          // 清理掉输入缓冲器:
          client.flush();
          Serial.println("We have a new client");
          client.println("Hello, client!");
          client.print("my IP: ");
          client.println(Ethernet.localIP());
          break;
        }
      }
    }
 
    if (client.available() > 0) {
      //从客户端读取传入的字节:
      char thisChar = client.read();
      // 呼应字节后面所有其他连接的客户端:
      for (byte i=0;i<4;i++) {
        if (clients[i] && clients[i]!=client) {
          clients[i].write(thisChar);
        }
      }
      // 呼应所有包括的字节到服务器:
      Serial.write(thisChar);
    }
  }
  for (byte i=0;i<4;i++) {
    if (!(clients[i].connected())) {
      // client.stop()无效内部插座描述符,这样下次使用==将始终返回false;
      clients[i].stop();
    }
  }
}

聊天操作

1、打开IDE的串口监视器,查看ENC28J60分配的IP地址。

2、用PUTTY软件,以telnet的方式,登陆界面,发送信息,其他客户端即可收到并显示消息。

返回上一级

ocrobot/alpha/enc28j60/tutorial01.txt · 最后更改: 2023/06/07 04:23 由 127.0.0.1