Sample to show hanging during socket initialization

Dependencies:   EthernetInterface NTPClient mbed-rtos mbed

sample server (python) to go with the RTOSTest

Import programRTOSTest

Sample to show hanging during socket initialization

#!/usr/bin/python2.7

import sys, os
import asyncore, socket
import time, datetime

class EchoClient(asyncore.dispatcher_with_send):
	def handle_read(self):
		buffer = self.recv(1024)
		if buffer:
			print str(datetime.datetime.fromtimestamp(time.time()))
			print buffer
		else:
			self.close()
	
class Server(asyncore.dispatcher):
	def __init__(self, host, port):
		asyncore.dispatcher.__init__(self)
		self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
		self.set_reuse_addr()
		self.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
		self.bind(('', port))
		self.listen(8)

	def handle_accept(self):
		socket, address = self.accept()
		print str(datetime.datetime.fromtimestamp(time.time()))
		print 'Connection by', address
		EchoClient(socket)


s = Server('', 8080)
asyncore.loop()

Files at this revision

API Documentation at this revision

Comitter:
jonathonfletcher
Date:
Thu Sep 27 12:14:57 2012 +0000
Parent:
0:5197a41c178f
Commit message:
add server_ip and server_port at the top of the example.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 5197a41c178f -r 92d3f1118200 main.cpp
--- a/main.cpp	Thu Sep 27 12:06:18 2012 +0000
+++ b/main.cpp	Thu Sep 27 12:14:57 2012 +0000
@@ -4,6 +4,9 @@
 #include "EthernetInterface.h"
 #include "NTPClient.h"
 
+// XXX: Change this to a valid IP of your network.
+const char *server_ip = "10.0.1.253";
+const unsigned short server_port = 8080;
 
 const char *newline = "\r\n";
 const unsigned int connection_timeout = 6000;
@@ -51,7 +54,7 @@
 
     printf("%s:%d nmessages:%d%s", __FILE__, __LINE__, nmessages, newline);
     if (!socket.is_connected()) {
-        socket.connect("10.0.1.253", 8080);
+        socket.connect(server_ip, server_port);
     }
 
     printf("%s:%d%s", __FILE__, __LINE__, newline);