hi,
i need to make a tcp connection with mbed and pc. but i don't know what i do wrong.
i already can receive tcp messages but i got a problem with the sender
can anybody help?
- include "mbed.h"
- include "EthernetNetIf.h"
- include "TCPSocket.h"
EthernetNetIf eth;
TCPSocket tcp;
Host server(IpAddr(10,101,8,229), 13000, "server");
struct
{
int connected;
int writeable;
}flags;
void onTCPSocketEvent(TCPSocketEvent e)
{
printf("New TCPSocketEvent: %d",e);
switch(e)
{
case TCPSOCKET_CONNECTED: flags.connected = 1;break;
case TCPSOCKET_WRITEABLE: flags.writeable = 1;break;
case TCPSOCKET_CONTIMEOUT:
case TCPSOCKET_CONRST:
case TCPSOCKET_CONABRT:
case TCPSOCKET_ERROR:
case TCPSOCKET_DISCONNECTED:
{
tcp.close();
flags.connected = 0;
}break;
}
}
void sendMessage(Host host, char* message, int msgLen)
{
printf("sending\r\n");
TCPSocketErr err = tcp.connect(host);
printf("Connectection...\r\n");
if(err)
{ printf("Error connecting to host %d\r\n", (int) err);}
else
{ printf("connectection to host OK %d\r\n",(int) err);}
if(flags.connected && flags.writeable)
{
printf("Sending data\r\n");
flags.writeable = 0;
int transLen = tcp.send(message,msgLen);
if(transLen != msgLen)
{printf("Error in transmission\r\n");}
else
{printf("transmission OK\r\n");}
printf("end sending data \r\n");
}
else
{
printf("sending data fail\r\n");
printf("connected: %d, writeable %d\r\n",flags.connected , flags.writeable);
}
printf("tcp close\r\n");
tcp.close();
}
int main()
{
DigitalOut led4(LED4, "led4");
led4=!led4;
EthernetErr ethErr = eth.setup();
if(ethErr)
printf("Ethernet Error %d\r\n", ethErr);
else
printf("mbed is online...\r\n");
tcp.setOnEvent(&onTCPSocketEvent);
Timer tmr;
tmr.start();
while(true)
{
Net::poll();
if(tmr.read() > 0.2) sec
{
led4=!led4; Show that we are alive
tmr.reset();
printf("send Message \r\n");
sendMessage(server,"Hello Server\n",13);
}
}
}
i can connect to the host but the flags connected and writeble doesn't go high and i don't know why.
does anybody know or does anyon has working cpp-code for the mbed?
thnx
marnix
you also can mail to marnixvolders@gmail.com
hi,
i need to make a tcp connection with mbed and pc. but i don't know what i do wrong. i already can receive tcp messages but i got a problem with the sender can anybody help?
EthernetNetIf eth; TCPSocket tcp; Host server(IpAddr(10,101,8,229), 13000, "server");
struct { int connected; int writeable; }flags;
void onTCPSocketEvent(TCPSocketEvent e) { printf("New TCPSocketEvent: %d",e); switch(e) { case TCPSOCKET_CONNECTED: flags.connected = 1;break;
case TCPSOCKET_WRITEABLE: flags.writeable = 1;break;
case TCPSOCKET_CONTIMEOUT: case TCPSOCKET_CONRST: case TCPSOCKET_CONABRT: case TCPSOCKET_ERROR: case TCPSOCKET_DISCONNECTED: { tcp.close(); flags.connected = 0; }break; } }
void sendMessage(Host host, char* message, int msgLen) { printf("sending\r\n"); TCPSocketErr err = tcp.connect(host); printf("Connectection...\r\n"); if(err) { printf("Error connecting to host %d\r\n", (int) err);} else { printf("connectection to host OK %d\r\n",(int) err);}
if(flags.connected && flags.writeable) { printf("Sending data\r\n"); flags.writeable = 0; int transLen = tcp.send(message,msgLen); if(transLen != msgLen) {printf("Error in transmission\r\n");} else {printf("transmission OK\r\n");} printf("end sending data \r\n");
} else { printf("sending data fail\r\n"); printf("connected: %d, writeable %d\r\n",flags.connected , flags.writeable); } printf("tcp close\r\n"); tcp.close(); }
int main() { DigitalOut led4(LED4, "led4"); led4=!led4; EthernetErr ethErr = eth.setup(); if(ethErr) printf("Ethernet Error %d\r\n", ethErr);
else printf("mbed is online...\r\n");
tcp.setOnEvent(&onTCPSocketEvent);
Timer tmr; tmr.start(); while(true) { Net::poll(); if(tmr.read() > 0.2) sec { led4=!led4; Show that we are alive tmr.reset();
printf("send Message \r\n"); sendMessage(server,"Hello Server\n",13); } } }
i can connect to the host but the flags connected and writeble doesn't go high and i don't know why. does anybody know or does anyon has working cpp-code for the mbed?
thnx marnix you also can mail to marnixvolders@gmail.com