c ++ - Sådan skriver du sokkelkommunikationsprogram ved hjælp af win32

Indlæg af Hanne Mølgaard Plasc

Problem



Ny fyr vil lære om socket programmering i win32. Jeg kender lidt af MFC, men det er ikke godt at starte, da det bare skjuler de interne detaljer for programmereren.

Bedste reference


Brug winsock funktioner (Winsock2.h).

Andre referencer 1


http://beej.us/guide/bgnet/[1]


Beejs guide er et ret fælles udgangspunkt. Det har været et par år siden jeg startede med disse ting, men iirc bruger guiden Berkeley sockets og påpeger forskellene med winsock hvor det er relevant.

Andre referencer 2


Du har ret, at MFC vil skjule nogle detaljer, jeg har ingen anelse om, hvorfor de besluttede at pakke det.


Der er en række gode bøger og tutorials om WinSock programmering. Her er en;


http://www.codeproject.com/KB/IP/winsockintro01.aspx[2]

Andre referencer 3


Svaret er at bruge win32 socket API.


Der er oplysninger om denne API i MSDN.


Det (den såkaldte 'Winsock' API) ligner (baseret på) Unix/Posix API, så også MSDN meget litteraturen (bøger) om brug af stikkontakter på Unix er også relevant.


Googling finder du kodeprøver, formodentlig.


Du vil gerne vide lidt om netværk: hvad er en 'IP-adresse' og en 'port' for eksempel.


Du vil vælge en protokol (UDP eller TCP).


En af de ting, der er forskellige med Win32, er, at du kan bruge ReadFile og WriteFile, når du har en tilsluttet stikkontakt, hvilket betyder at du kan bruge indstillingerne til overlappede I/O, der er forbundet med ReadFile og WriteFile.

Andre referencer 4


Jeg er helhjertet enig med ChrisW og kommer dig til at gå videre med MFC.


Se MSDN Winsock Reference for masser af gode WinSock-oplysninger. [3]


Selvom det kan være for stort til at lære af, har jeg det, jeg anser for at være en meget flot Socket Server Class - lad mig vide, om du finder noget af det nyttigt. [4]

Andre referencer 5


En lille antydning ville være (forudsat at du bruger Visual Studio og Winsocket librabry), som du har brug for at forbinde WS2\_32.Lib manuelt. Jeg finder ud af, at dette lille trin er noget, mange forretter savner og får nogle underlige fejl (underligt i øjnene af beholderen) på grund af det.
http://social.microsoft.com/Forums/en-US/vcgeneral/thread/cfefa4a5-1f1a-4987-8bc7-f3197cb5826c[5]


Også; Du skal ikke bruge MFC. Der er masser af gode guider til winsocket programmering på google-nettet :)


Held og lykke

Andre referencer 6


Jeg foreslår at kigge på


Kom i gang med Winsock (Windows) [6]


og også


Unraveling Mysteries of Writing en Winsock 2-lagret Service Provider [7]

Andre referencer 7


To muligheder:



  1. Skriv en filstrømbaseret kode, der snakker til seriel porten.

  2. brug et C ++-bibliotek til seriel portkommunikation (google for dette)



Den første mulighed betyder at skrive 'kedelplade' kode, så du ville være bedre ved at bruge et tredjepartsbibliotek til det.


Den mest almindelige 'startproblemer' med seriel portprogrammering er at etablere et kommunikationsforbindelse med enheden. Du behøver at have de korrekte indstillinger for portnavnet, baudrate, paritet osv. (Normalt givet af producenten af ​​enheden).


Så vil der også være et 'kommandosæt' til enheden. For eksempel hvis du sender '?' til enheden vil den returnere med enhedsoplysninger som producentnavn osv. (kommandoen '?' er et eksempel, det er ikke et standardkommandosæt, der varierer fra enhed til enhed).


Al seriel kommunikation fungerer som sådan:
- du skriver en kommando til seriel porten
- Undersøg læsebufferen for svar fra enheden


Efter min viden er der ingen indbyggede seriel portkommunikationsklasser i C ++ eller MFC, men der er mange tredjeparts libs til dette.