ΑΡΧΕΣ ΚΑΙ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Άσκηση 2  - [RobotRemoteController]

 

Απαντήσεις σε ερωτήσεις

 

1η Ερώτηση

wsock32.dll (BSD Socket API for Windows Dll)
Έχω μια απορία για την δεύτερη άσκηση. Στα Windows με τον compiler που μας έχετε δώσει όλα τρέχουν ομαλά σε ό,τι αφορά τις βιβλιοθήκες. Από όσα γράφει στην ενότητα \"Χρησιμοποίηση Βιβλιοθηκών\" για να χρησιμοποιήσουμε την βιβλιοθήκη Robot πρέπει να υπάρχει η βιβλιοθήκη συστήματος wsock32. Νομίζω πως η βιβλιοθήκη αυτή υπάρχει μόνο στα windows (στο directory του DevCpp). 
Στις υπόλοιπες πλατφόρμες δεν χρειάζεται; Έχει κάποιο διαφορετικό όνομα ή μορφή;

 

Απάντηση

στα περιβάλλοντα cygwin, linux δεν χρειάζεται η wsock32, οι συναρτήσεις είναι ενσωματωμένες στην βασική βιβλιοθήκη.

 

What is WSOCK32.DLL?

WSOCK32.DLL is a dynamic-link library (DLL) that provides Windows Sockets API for 32-bit TCP/IP Windows Socket applications and 32-bit IPX/SPX Windows Socket Applications. WSOCK32.DLL is offered in Windows NT and 95. (http://support.microsoft.com/kb/151210)

 

The library file wsock32.dll, is required by windows and is used by applications when performing TCP/IP network communication. If wsock32.dll is unavailable, your pc will become unstable as network methods (even if not used) are present in a large number of applications.

 

Η βιβλιοθήκη Robot έχει αναπτυχθεί κάνοντας χρήση του Posix socket API.
Στο unix/linux και το cygwin το api αυτό αποτελεί μέρος της βασικής βιβλιοθήκης του GCC (include files: sys/socket.h και netinet/in.h) και δεν χρειάζεται στο compilation να δοθεί κάποια επιπλέον βιβλιοθήκη για linking (οι σχετικές συναρτήσεις είναι ήδη statically linked στη βιβλιοθήκη Robot).
Σε περιβάλλον windows με devcpp ένα posix-like socket interface παρέχετε στο winsock.h και υλοποιείται από την ξεχωριστή βιβλιοθήκη wsock32, για αυτό και χρειάζεται η σχετική παράμετρος στο compilation (ίσως να μπορούσε να αποφευχθεί η χρήση της παραμέτρου αυτής αν η wsock32 γινόταν statically linked κατά το compilation της Robot αλλά αυτό που έκανα ήταν το ποιο εύκολο που μπορούσα να κάνω εκείνη τη στιγμή).

Πάντως σε οποιαδήποτε περίπτωση τα include files (sys/socket.h, netinet/in.h, winsock.h) ΔΕΝ χρειάζεται να γίνουν include από τους φοιτητές στο controller που αναπτύσσουν καθώς δεν χρησιμοποιούν απευθείας το socket api αλλά μέσω της Robot.

 

 

2η Ερώτηση

"ERROR: connecting to server [11][10061]"

Κ.Θραμπουλίδη αντιμετωπίζω ένα πρόβλημα στη δραστηριότητα 3 του δεύτερου εργαστηρίου. Πιο συγκεκριμένα, τρέχω τον κώδικά μου και μου βγάζει συνέχεια μήνυμα "ERROR: connecting to server [1][10061]". Να αναφέρω ότι έχω θέσει πρώτα το πρόγραμμα RobotLabyrinth σε mode remote για να πάρω το ip, όπως τονίζεται και εσείς. Σας αποστέλλω και το αρχείο με τον κώδικά μου.
Υπάρχει κάποιο λάθος σε αυτο;

 

Απάντηση

Σε πρώτη φάση βάλε την πληροφορία που δίνει ο χρήστης (IP, port number, file name) στον κώδικα ή έλεγξε αν αυτή που εισάγει ο χρήστης είναι η σωστή.  

Απάντηση

Σε Ο€Ο