/////////////////////////////////////////////////////////////////////////////// // // (c) Digi International Inc. 2002. All Rights Reserved // // Digi provides this document "as is," without warranty of any kind, // either expressed or implied, including, but not limited to, the implied // warranties of fitness or merchantability for a particular purpose. Digi // may make improvements and/or changes in this document or in the product(s) // and/or the program(s) described in this document at any time. // // This document could include technical inaccuracies or typographical errors. // Changes are periodically made to the information herein; these changes may // be incorporated in new editions of the publication. // // Digi International Inc. // 11001 Bren Road East // Minnetonka, MN 55343, USA // Tel: +1 (952) 912-3444 // Fax: +1 (952) 912-4952 // http://www.digi.com/ // /////////////////////////////////////////////////////////////////////////////// // TCPServer.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "HexDumpData.h" #include "MySocket.h" int main(int argc, char* argv[]) { printf("Start\n"); WSADATA WSAData = {0}; WSAStartup(WINSOCK_VERSION, &WSAData); printf("Creating socket ...\n"); SOCKET ListenSocket = MySocketOpen(SOCK_STREAM, 7777); if (ListenSocket != INVALID_SOCKET) { SOCKADDR SockAddr = {0}; int SockAddrLength = sizeof(SockAddr); getsockname(ListenSocket, &SockAddr, &SockAddrLength); char LocalAddress[32] = {0}; DWORD LocalAddressLength = sizeof(LocalAddress); WSAAddressToString(&SockAddr, SockAddrLength, NULL, LocalAddress, &LocalAddressLength); printf("Socket created on %s\n", LocalAddress); printf("Listening ...\n"); listen(ListenSocket, 1); while (TRUE) { SOCKADDR AcceptSockAddr = {0}; int AcceptSockAddrLength = sizeof(AcceptSockAddr); SOCKET ConnectedSocket = WSAAccept(ListenSocket, &AcceptSockAddr, &AcceptSockAddrLength, NULL, 0); if (ConnectedSocket != INVALID_SOCKET) { printf("Accepting ...\n"); char PeerAddress[32] = {0}; DWORD PeerAddressLength = sizeof(PeerAddress); WSAAddressToString(&AcceptSockAddr, AcceptSockAddrLength, NULL, PeerAddress, &PeerAddressLength); printf("Connected to %s\n", PeerAddress); BYTE SendData[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', }; printf("Sending:\n"); HexDumpData(SendData, sizeof(SendData)); MySocketSend(ConnectedSocket, SendData, sizeof(SendData)); BYTE RecvData[256] = {0}; DWORD BytesReceived = sizeof(RecvData); while ((MySocketRecv(ConnectedSocket, RecvData, &BytesReceived) == 0) && (BytesReceived > 0)) { printf("Received:\n"); HexDumpData(RecvData, BytesReceived); BytesReceived = sizeof(RecvData); } printf("Closing connected socket\n"); MySocketClose(ConnectedSocket); } else { printf("Accept failed\n"); break; } } printf("Closing listen socket\n"); MySocketClose(ListenSocket); printf("Finish\n"); } else { printf("Socket creation failed\n"); } WSACleanup(); return 0; }