Ik gebruik MCL (mackintosh common lisp) om een tcp verbinding te maken. Daarvoor gebruik ik de
Ik wil op dezelfde manier naar deze stream schrijven als in de volgende java code:
De context is hier dat er een server draait op een robot waarnaar commandos gestuurd worden. De java-code bestaat al, maar het project waar ik mee bezig ben vereist dat ik hetzelfde doe in lisp. Meer informatie over de server en client staan op www.urbiforge.com. Daar staat de URBI server voor de AIBO robot en ook de client die libURBI heet (is er voor java, c++ en matlab).
Ik besef dat het misschien niet helemaal duidelijk is, maar ik begrijp het dan ook nog niet helemaal.
De vraag is: hoe zet ik het stukje java code om in lisp code?
code:
Hierbij is "laika" een alias voor een ipadres.1
2
| (require :opentransport) (setq mystream (ccl::open-tcp-stream "laika" 54000)) |
Ik wil op dezelfde manier naar deze stream schrijven als in de volgende java code:
code:
channel is van de classe SocketChannel. Hier wordt dus een string omgezet in een ByteBuffer en die ByteBuffer wordt naar een socket gestuurd. In lisp kan ik wel zoiets doen:1
2
3
4
5
6
7
8
| final synchronized public int effectiveSend(String arg) throws IOException
{
ByteBuffer byteBuffer = ByteBuffer.wrap(arg.getBytes());
int nbytes = channel.write(byteBuffer);
while (byteBuffer.remaining() != 0)
nbytes += channel.write(byteBuffer);
return nbytes;
} |
code:
en de string wordt ook netjes geaccepeerd door de server, maar die kan daar niets mee. Blijkbaar moet echt ik de ByteBuffer equivalent voor Lisp gebruiken.1
| (write-line "blabla" mysocket) |
De context is hier dat er een server draait op een robot waarnaar commandos gestuurd worden. De java-code bestaat al, maar het project waar ik mee bezig ben vereist dat ik hetzelfde doe in lisp. Meer informatie over de server en client staan op www.urbiforge.com. Daar staat de URBI server voor de AIBO robot en ook de client die libURBI heet (is er voor java, c++ en matlab).
Ik besef dat het misschien niet helemaal duidelijk is, maar ik begrijp het dan ook nog niet helemaal.
De vraag is: hoe zet ik het stukje java code om in lisp code?